Imported Upstream version 3.6.1
authorHyunjee Kim <hj0426.kim@samsung.com>
Thu, 31 Jan 2019 01:53:27 +0000 (10:53 +0900)
committerHyunjee Kim <hj0426.kim@samsung.com>
Thu, 31 Jan 2019 01:53:51 +0000 (10:53 +0900)
Change-Id: I68f7b3ff950d39cf7edc59e659aa85019cbf8274
Signed-off-by: Hyunjee Kim <hj0426.kim@samsung.com>
463 files changed:
CHANGES.txt
INSTALL.txt
PKG-INFO
buildlibxml.py
doc/FAQ.txt
doc/build.txt
doc/extensions.txt
doc/html/FAQ.html
doc/html/api.html
doc/html/api/abc.ABCMeta-class.html
doc/html/api/api-objects.txt
doc/html/api/class-tree.html
doc/html/api/cssselect.parser.SelectorError-class.html
doc/html/api/cssselect.parser.SelectorSyntaxError-class.html
doc/html/api/cssselect.xpath.ExpressionError-class.html
doc/html/api/cssselect.xpath.XPathExpr-class.html
doc/html/api/deprecated-index.html
doc/html/api/exceptions.AssertionError-class.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/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.HTMLPullParser-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.XMLPullParser-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.htmlfile-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.Classes-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.soupparser._PseudoTag-class.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.dummy_http_server-module.html
doc/html/api/lxml.tests.dummy_http_server-pysrc.html
doc/html/api/lxml.tests.dummy_http_server.HTTPRequestCollector-class.html
doc/html/api/lxml.tests.dummy_http_server.WebServer-class.html
doc/html/api/lxml.tests.dummy_http_server._RequestHandler-class.html
doc/html/api/lxml.tests.selftest-module.html
doc/html/api/lxml.tests.selftest-pysrc.html
doc/html/api/lxml.tests.selftest2-module.html
doc/html/api/lxml.tests.selftest2-pysrc.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_doctestcompare-module.html
doc/html/api/lxml.tests.test_doctestcompare-pysrc.html
doc/html/api/lxml.tests.test_doctestcompare.DoctestCompareTest-class.html
doc/html/api/lxml.tests.test_doctestcompare.DummyInput-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_elementpath-module.html
doc/html/api/lxml.tests.test_elementpath-pysrc.html
doc/html/api/lxml.tests.test_elementpath.EtreeElementPathTestCase-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.ETreePullTestCase-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_elementtree._XMLPullParserTest-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.XMLPullParserTest-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_http_io-module.html
doc/html/api/lxml.tests.test_http_io-pysrc.html
doc/html/api/lxml.tests.test_http_io.HttpIOTestCase-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.HtmlFileTestCase-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.TempPathXmlFileTestCase-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_relaxng.RelaxNGCompactTestCase-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.ParseAndInjectWorker-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.Validate-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.EncodingsTestCase-class.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/mimetools.Message-class.html
doc/html/api/module-tree.html
doc/html/api/str-class.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/html/build.html
doc/html/capi.html
doc/html/changes-3.6.0.html [deleted file]
doc/html/changes-3.6.1.html [new file with mode: 0644]
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/resolvers.html
doc/html/sax.html
doc/html/sitemap.html
doc/html/style.css
doc/html/tutorial.html
doc/html/validation.html
doc/html/xpathxslt.html
doc/html5parser.txt
doc/lxml-source-howto.txt
doc/lxmlhtml.txt
doc/main.txt
doc/memorymanagement.txt
doc/mkhtml.py
doc/objectify.txt
doc/performance.txt
doc/sax.txt
doc/tutorial.txt
doc/validation.txt
src/lxml.egg-info/PKG-INFO
src/lxml.egg-info/SOURCES.txt
src/lxml/html/__init__.py
src/lxml/html/clean.py
src/lxml/html/tests/test_clean.txt
src/lxml/html/tests/test_forms.txt
src/lxml/includes/lxml-version.h
src/lxml/includes/xmlparser.pxd
src/lxml/includes/xslt.pxd
src/lxml/lxml.etree.c
src/lxml/lxml.etree.h
src/lxml/lxml.etree_api.h
src/lxml/lxml.objectify.c
src/lxml/lxml.objectify.pyx
src/lxml/parser.pxi
src/lxml/tests/test_objectify.py
src/lxml/tests/test_xslt.py
src/lxml/xmlerror.pxi
version.txt

index 9c911f208f0a11c02092918918e79e1db7bbd5fc..83a491f8659cbdd331f66626bc60fb87b4800aa0 100644 (file)
@@ -2,24 +2,56 @@
 lxml changelog
 ==============
 
+3.6.1 (2016-07-24)
+==================
+
+Features added
+--------------
+
+* GH#180: Separate option ``inline_style`` for Cleaner that only removes ``style``
+  attributes instead of all styles.  Patch by Christian Pedersen.
+
+* GH#196: Windows build support for Python 3.5.  Contribution by Maximilian Hils.
+
+Bugs fixed
+----------
+
+* GH#199: Exclude ``file`` fields from ``FormElement.form_values`` (as browsers do).
+  Patch by Tomas Divis.
+
+* GH#198, LP#1568167: Try to provide base URL from ``Resolver.resolve_string()``.
+  Patch by Michael van Tellingen.
+
+* GH#191: More accurate float serialisation in ``objectify.FloatElement``.
+  Patch by Holger Joukl.
+
+* LP#1551797: Repair XSLT error logging. Patch by Marcus Brinkmann.
+
+
 3.6.0 (2016-03-17)
 ==================
 
-* GH#189: Static builds honour FTP proxy configurations when downloading
-  the external libs.  Patch by Youhei Sakurai.
+Features added
+--------------
 
 * GH#187: Now supports (only) version 5.x and later of PyPy.
   Patch by Armin Rigo.
 
+* GH#181: Direct support for ``.rnc`` files in `RelaxNG()` if ``rnc2rng``
+  is installed.  Patch by Dirkjan Ochtman.
+
+Bugs fixed
+----------
+
+* GH#189: Static builds honour FTP proxy configurations when downloading
+  the external libs.  Patch by Youhei Sakurai.
+
 * GH#186: Soupparser failed to process entities in Python 3.x.
   Patch by Duncan Morris.
 
-* GH#185: Rare encoding related `TypeError` on import was fixed.
+* GH#185: Rare encoding related ``TypeError`` on import was fixed.
   Patch by Petr Demin.
 
-* GH#181: Direct support for `.rnc` files in `RelaxNG()` if `rnc2rng`
-  is installed.  Patch by Dirkjan Ochtman.
-
 
 3.5.0 (2015-11-13)
 ==================
index 84059d9e642d79dcab76685e1d80924e62f12870..8508fea079e7a23557d7000a2ebef45157439732 100644 (file)
@@ -216,7 +216,7 @@ Source builds on MacOS-X
 If you are not using macports or want to use a more recent lxml
 release, you have to build it yourself.  While the pre-installed system
 libraries of libxml2 and libxslt are less outdated in recent MacOS-X
-versions than they used to be, so lxml should work them them out of the
+versions than they used to be, so lxml should work with them out of the
 box, it is still recommended to use a static build with the most recent
 library versions.
 
index ee61c7e0801aa1463e0be1f86b0a7e053076c9bb..b0ade2f915bb51a4aa7d956792249d03e07c1b08 100644 (file)
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: lxml
-Version: 3.6.0
+Version: 3.6.1
 Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
 Home-page: http://lxml.de/
 Author: lxml dev team
@@ -36,23 +36,30 @@ Description: lxml is a Pythonic, mature binding for the libxml2 and libxslt libr
         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.6.0 (2016-03-17)
+        3.6.1 (2016-07-24)
         ==================
         
-        * GH#189: Static builds honour FTP proxy configurations when downloading
-          the external libs.  Patch by Youhei Sakurai.
+        Features added
+        --------------
         
-        * GH#187: Now supports (only) version 5.x and later of PyPy.
-          Patch by Armin Rigo.
+        * GH#180: Separate option ``inline_style`` for Cleaner that only removes ``style``
+          attributes instead of all styles.  Patch by Christian Pedersen.
         
-        * GH#186: Soupparser failed to process entities in Python 3.x.
-          Patch by Duncan Morris.
+        * GH#196: Windows build support for Python 3.5.  Contribution by Maximilian Hils.
         
-        * GH#185: Rare encoding related `TypeError` on import was fixed.
-          Patch by Petr Demin.
+        Bugs fixed
+        ----------
         
-        * GH#181: Direct support for `.rnc` files in `RelaxNG()` if `rnc2rng`
-          is installed.  Patch by Dirkjan Ochtman.
+        * GH#199: Exclude ``file`` fields from ``FormElement.form_values`` (as browsers do).
+          Patch by Tomas Divis.
+        
+        * GH#198, LP#1568167: Try to provide base URL from ``Resolver.resolve_string()``.
+          Patch by Michael van Tellingen.
+        
+        * GH#191: More accurate float serialisation in ``objectify.FloatElement``.
+          Patch by Holger Joukl.
+        
+        * LP#1551797: Repair XSLT error logging. Patch by Marcus Brinkmann.
         
         
         
index 21284dadad3940289604193ff105541d216b6547..5b67132f652e29a17643f06cf360b4819012bbe0 100644 (file)
@@ -24,19 +24,28 @@ except:
 # use pre-built libraries on Windows
 
 def download_and_extract_zlatkovic_binaries(destdir):
-    url = 'ftp://ftp.zlatkovic.com/pub/libxml/'
-    libs = dict(
-        libxml2  = None,
-        libxslt  = None,
-        zlib     = None,
-        iconv    = None,
-    )
-    for fn in ftp_listdir(url):
-        for libname in libs:
-            if fn.startswith(libname):
-                assert libs[libname] is None, 'duplicate listings?'
-                assert fn.endswith('.win32.zip')
-                libs[libname] = fn
+    if sys.version_info < (3, 5):
+        url = 'ftp://ftp.zlatkovic.com/pub/libxml/'
+        libs = dict(
+            libxml2  = None,
+            libxslt  = None,
+            zlib     = None,
+            iconv    = None,
+        )
+        for fn in ftp_listdir(url):
+            for libname in libs:
+                if fn.startswith(libname):
+                    assert libs[libname] is None, 'duplicate listings?'
+                    assert fn.endswith('.win32.zip')
+                    libs[libname] = fn
+    else:
+        url = "https://github.com/mhils/libxml2-win-binaries/releases/download/lxml/"
+        libs = dict(
+            libxml2  = "libxml2-latest.win32.zip",
+            libxslt  = "libxslt-latest.win32.zip",
+            zlib     = "zlib-latest.win32.zip",
+            iconv    = "iconv-latest.win32.zip",
+        )
 
     if not os.path.exists(destdir): os.makedirs(destdir)
     for libname, libfn in libs.items():
@@ -121,8 +130,9 @@ def parse_text_ftplist(s):
     for line in s.splitlines():
         if not line.startswith('d'):
             # -rw-r--r--   1 ftp      ftp           476 Sep  1  2011 md5sum.txt
-            # Last (9th) element is 'md5sum.txt' in the above example.
-            yield line.split(None, 9)[-1]
+            # Last (9th) element is 'md5sum.txt' in the above example, but there
+            # may be variations, so we discard only the first 8 entries.
+            yield line.split(None, 8)[-1]
 
 def parse_html_ftplist(s):
     re_href = re.compile(r'<a\s+(?:[^>]*?\s+)?href=["\'](.*?)[;\?"\']', re.I|re.M)
@@ -139,14 +149,14 @@ def tryint(s):
 
 def download_libxml2(dest_dir, version=None):
     """Downloads libxml2, returning the filename where the library was downloaded"""
-    version_re = re.compile(r'^LATEST_LIBXML2_IS_(.*)$')
+    version_re = re.compile(r'LATEST_LIBXML2_IS_([0-9.]+[0-9])')
     filename = 'libxml2-%s.tar.gz'
     return download_library(dest_dir, LIBXML2_LOCATION, 'libxml2',
                             version_re, filename, version=version)
 
 def download_libxslt(dest_dir, version=None):
     """Downloads libxslt, returning the filename where the library was downloaded"""
-    version_re = re.compile(r'^LATEST_LIBXSLT_IS_(.*)$')
+    version_re = re.compile(r'LATEST_LIBXSLT_IS_([0-9.]+[0-9])')
     filename = 'libxslt-%s.tar.gz'
     return download_library(dest_dir, LIBXML2_LOCATION, 'libxslt',
                             version_re, filename, version=version)
index 0dc620fa9bafad443757f3793238273b5e5a5131..e47183e8a0cba95b6ec412a46c6cced878ce848e 100644 (file)
@@ -201,7 +201,7 @@ not take advantage of lxml's enhanced feature set.
   a secure HTTP proxy
 * `lwebstring <http://pypi.python.org/pypi/lwebstring>`_,
   an XML template engine
-* `openpyxl <https://openpyxl.readthedocs.org/>`_,
+* `openpyxl <https://openpyxl.readthedocs.io/>`_,
   a library to read/write MS Excel 2007 files
 * `OpenXMLlib <http://permalink.gmane.org/gmane.comp.python.lxml.devel/3250>`_,
   a library for handling OpenXML document meta data
index efa3a76926c8abfccccf197c25eb92a5a31ce949..afc385f7ffe3249f74712621eddbe05f7230d1a7 100644 (file)
@@ -23,7 +23,7 @@ Cython
 
 .. _pip: http://pypi.python.org/pypi/pip
 .. _Cython: http://cython.org
-.. _wheel: http://wheel.readthedocs.org/en/latest/
+.. _wheel: https://wheel.readthedocs.io/en/latest/
 
 The lxml.etree and lxml.objectify modules are written in Cython_.
 Since we distribute the Cython-generated .c files with lxml releases,
@@ -321,7 +321,7 @@ Building Debian packages from SVN sources
   increase the debian version number so apt/dpkg won't get confused
 * run ``dpkg-buildpackage -rfakeroot -us -uc`` to build the package
 
-In case ``dpkg-buildpackage`` tells you that some dependecies are missing, you
+In case ``dpkg-buildpackage`` tells you that some dependencies are missing, you
 can either install them manually or run ``apt-get build-dep lxml``.
 
 That will give you .deb packages in the parent directory which can be
index d379ae028cc78ebc5263447071dab0763f8c16d1..287fb649c449b7d61e1aa6f726bb5a44c9e0e979 100644 (file)
@@ -277,7 +277,7 @@ and use the ``Extension`` helper:
   >>> print(e('l:function1(string(b))'))
   1Haegar
 
-The optional second argument to ``Extension`` can either be be a
+The optional second argument to ``Extension`` can either be a
 sequence of names to select from the module, a dictionary that
 explicitly maps function names to their XPath alter-ego or ``None``
 (explicitly passed) to take all available functions under their
index d3d8c649f82c164da066c17e1c09e0b5ebd130ea..ccbf18670c397cebd9f587d9b1900dc12219d967 100644 (file)
@@ -7,10 +7,26 @@
 <meta content="Frequently Asked Questions about lxml (FAQ)" name="description" />
 <meta content="lxml, lxml.etree, FAQ, frequently asked questions" name="keywords" />
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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>
@@ -169,7 +185,7 @@ a web server accelerator with on-the-fly XSLT processing</li>
 a secure HTTP proxy</li>
 <li><a class="reference external" href="http://pypi.python.org/pypi/lwebstring">lwebstring</a>,
 an XML template engine</li>
-<li><a class="reference external" href="https://openpyxl.readthedocs.org/">openpyxl</a>,
+<li><a class="reference external" href="https://openpyxl.readthedocs.io/">openpyxl</a>,
 a library to read/write MS Excel 2007 files</li>
 <li><a class="reference external" href="http://permalink.gmane.org/gmane.comp.python.lxml.devel/3250">OpenXMLlib</a>,
 a library for handling OpenXML document meta data</li>
@@ -939,7 +955,7 @@ map it to your namespace.  See also the question above.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index c7899de76f99aef9915d04079d14ce306ef66d63..cbec5d8d7d1a929073a31d5913044c475dfd0e28 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>APIs specific to lxml.etree</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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
@@ -496,7 +512,7 @@ example:</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index de29b57aade0f5b54ace9e3d9027b0bc2db09211..ea3bf59b0969e9bd27f6501dd5398fbff382f5b5 100644 (file)
@@ -426,7 +426,7 @@ even via super()).</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 83e1cf9523e273e9c306bb5f180d02b249af602f..e4cce660716f48b5b6b61aae80643a9138753252 100644 (file)
@@ -3554,6 +3554,7 @@ lxml.html.clean.Cleaner.whitelist_tags    lxml.html.clean.Cleaner-class.html#whitel
 lxml.html.clean.Cleaner.__call__       lxml.html.clean.Cleaner-class.html#__call__
 lxml.html.clean.Cleaner.remove_tags    lxml.html.clean.Cleaner-class.html#remove_tags
 lxml.html.clean.Cleaner._kill_elements lxml.html.clean.Cleaner-class.html#_kill_elements
+lxml.html.clean.Cleaner.inline_style   lxml.html.clean.Cleaner-class.html#inline_style
 lxml.html.clean.Cleaner._has_sneaky_javascript lxml.html.clean.Cleaner-class.html#_has_sneaky_javascript
 lxml.html.clean.Cleaner.processing_instructions        lxml.html.clean.Cleaner-class.html#processing_instructions
 lxml.html.clean.Cleaner.javascript     lxml.html.clean.Cleaner-class.html#javascript
@@ -6813,6 +6814,7 @@ lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_data_element_arg_i
 lxml.tests.test_objectify.ObjectifyTestCase.etree      lxml.etree-module.html
 lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_nsmap_custom_prefixes    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_custom_prefixes
 lxml.tests.test_objectify.ObjectifyTestCase.test_xsitype_deannotate    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsitype_deannotate
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_default_relative  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_default_relative
 lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_nsmap_custom     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_custom
 lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_as_complex   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_as_complex
 lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_fail_parse_empty  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail_parse_empty
@@ -6844,6 +6846,7 @@ lxml.tests.test_objectify.ObjectifyTestCase.test_type_ustr_intliteral     lxml.tests
 lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_set_create_list   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create_list
 lxml.tests.test_objectify.ObjectifyTestCase.test_date_element_efactory_text    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_date_element_efactory_text
 lxml.tests.test_objectify.ObjectifyTestCase.test_root  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_root
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_float_precision  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_float_precision
 lxml.tests.test_objectify.ObjectifyTestCase.test_setslice_empty        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_empty
 lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_as_int       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_as_int
 lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_ustr_floatliteral        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_ustr_floatliteral
@@ -6871,7 +6874,7 @@ lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_addattr_element      lxm
 lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_nsmap_default    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_default
 lxml.tests.test_objectify.ObjectifyTestCase.test_dataelement_xsi_nsmap lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi_nsmap
 lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_subtype      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_subtype
-lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_data_element_arg_pytype_xsitype  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_pytype_xsitype
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_float_hash_repr  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_hash_repr
 lxml.tests.test_objectify.ObjectifyTestCase.test_setslice_elements     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_elements
 lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_mod  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_mod
 lxml.tests.test_objectify.ObjectifyTestCase.test_child_index   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_index
@@ -6909,8 +6912,10 @@ lxml.tests.test_objectify.ObjectifyTestCase.test_dataelement_xsi lxml.tests.test
 lxml.tests.test_objectify.ObjectifyTestCase.test_getslice_partial_neg  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_getslice_partial_neg
 lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_element_arg      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_element_arg
 lxml.tests.test_objectify.ObjectifyTestCase.test_type_none_cmp lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_none_cmp
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_float_instantiation_precision    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_float_instantiation_precision
 lxml.tests.test_objectify.ObjectifyTestCase.test_child_len     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_len
 lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_pytype_none      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytype_none
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_mod_data_elements    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_mod_data_elements
 lxml.tests.test_objectify.ObjectifyTestCase.test_setslice_insert       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_insert
 lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_nsmap_empty      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_empty
 lxml.tests.test_objectify.ObjectifyTestCase.test_schema_types_prefixed lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_schema_types_prefixed
@@ -6927,7 +6932,7 @@ lxml.tests.test_objectify.ObjectifyTestCase.test_type_ustr_add    lxml.tests.test_o
 lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_dot_root  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_root
 lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_hasattr   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_hasattr
 lxml.tests.test_objectify.ObjectifyTestCase.test_XML_base_url_docinfo  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_XML_base_url_docinfo
-lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_default_relative  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_default_relative
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_float_precision_consistency      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_float_precision_consistency
 lxml.tests.test_objectify.ObjectifyTestCase.test_xsiannotate_use_old   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsiannotate_use_old
 lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
 lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_pytype_none_compat       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytype_none_compat
@@ -6960,13 +6965,14 @@ lxml.tests.test_objectify.ObjectifyTestCase.test_child  lxml.tests.test_objectify
 lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_floatliteral lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_floatliteral
 lxml.tests.test_objectify.ObjectifyTestCase.test_parse_base_url_docinfo        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_parse_base_url_docinfo
 lxml.tests.test_objectify.ObjectifyTestCase.test_element_nsmap_custom  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_custom
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_float_precision  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_precision
 lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_bool     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_bool
 lxml.tests.test_objectify.ObjectifyTestCase.test_setslice_insert_neg   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_insert_neg
 lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_value_concatenation  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_value_concatenation
 lxml.tests.test_objectify.ObjectifyTestCase.test_pytype_deannotate     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_deannotate
 lxml.tests.test_objectify.ObjectifyTestCase.test_setslice_partial_neg  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial_neg
 lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_int  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_int
-lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_mod_data_elements    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_mod_data_elements
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_data_element_arg_pytype_xsitype  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_pytype_xsitype
 lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_invalid_pytype   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_invalid_pytype
 lxml.tests.test_objectify.ObjectifyTestCase.test_setattr_nonunicode    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setattr_nonunicode
 lxml.tests.test_objectify.ObjectifyTestCase.test_sub_element_nsmap_empty       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_empty
@@ -7373,7 +7379,6 @@ lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_parameter_invalid        lxml.tests.te
 lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_shortcut      lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_shortcut
 lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_document_parse_allow  lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_allow
 lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_message       lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_message
-lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_invalid_stylesheet    lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_invalid_stylesheet
 lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_unicode       lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_unicode
 lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_message_terminate     lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_message_terminate
 lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_input lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_input
@@ -7391,6 +7396,7 @@ lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt  lxml.tests.test_xslt.ETreeXSLTT
 lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_document_error        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_error
 lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_empty lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_empty
 lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_parameter_missing     lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_missing
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_invalid_stylesheet    lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_invalid_stylesheet
 lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_encoding_override     lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_encoding_override
 lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_include_from_filelike lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_include_from_filelike
 lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_elementtree_error     lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_elementtree_error
index 2062b8301b982295d61f2db89fdca7e88f496c9c..3fae5e09d82a0f048a58167bc8d64510674e3569 100644 (file)
@@ -658,12 +658,12 @@ Immutable object that represents a compiled object path.</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>
@@ -915,7 +915,7 @@ A global error log that connects to the Python stdlib logging package.</em>
     <li> <strong class="uidlink"><a href="lxml.etree._FeedParser-class.html" onclick="show_private();">lxml.etree._FeedParser</a></strong>
     <ul>
     <li> <strong class="uidlink"><a href="lxml.etree.HTMLParser-class.html">lxml.etree.HTMLParser</a></strong>:
-      <em class="summary">HTMLParser(self, encoding=None, remove_blank_text=False,                    remove_comments=False, remove_pis=False, strip_cdata=True,                    no_network=True, target=None, XMLSchema schema=None,                    recover=True, compact=True)</em>
+      <em class="summary">HTMLParser(self, encoding=None, remove_blank_text=False,                    remove_comments=False, remove_pis=False, strip_cdata=True,                    no_network=True, target=None, schema: XMLSchema =None,                    recover=True, compact=True)</em>
     <ul>
     <li> <strong class="uidlink"><a href="lxml.html.HTMLParser-class.html">lxml.html.HTMLParser</a></strong>:
       <em class="summary">An HTML parser that is configured to return lxml.html Element
@@ -927,7 +927,7 @@ objects.</em>
     </ul>
     </li>
     <li> <strong class="uidlink"><a href="lxml.etree.XMLParser-class.html">lxml.etree.XMLParser</a></strong>:
-      <em class="summary">XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, XMLSchema schema=None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)</em>
+      <em class="summary">XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)</em>
     <ul>
     <li> <strong class="uidlink"><a href="lxml.etree.ETCompatXMLParser-class.html">lxml.etree.ETCompatXMLParser</a></strong>:
       <em class="summary">ETCompatXMLParser(self, encoding=None, attribute_defaults=False,                  dtd_validation=False, load_dtd=False, no_network=True,                  ns_clean=False, recover=False, schema=None,                  huge_tree=False, remove_blank_text=False, resolve_entities=True,                  remove_comments=True, remove_pis=True, strip_cdata=True,                  target=None, compact=True)</em>
@@ -1123,13 +1123,13 @@ A DTD validator.</em>
       <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>
@@ -1319,7 +1319,7 @@ type(name, bases, dict) -&gt; a new type</em>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5aef132d94de4d4609da0ff116e8884998d034d1..2947c0fc87db3b322b910317ef0a05ef1bb896ae 100644 (file)
@@ -194,7 +194,7 @@ You can just use ``except SelectorError:`` when calling
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f69f6ba5b9d64559744cc5a208052ea51cfed9a9..c3a49b8b053712cf0f77190781671935ea44f187 100644 (file)
@@ -201,7 +201,7 @@ Parsing a selector that does not match the grammar.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 46de96f19ca66365f709d14b7254677229e5604d..ae4cf524343e30b7ef41ecec721ccb200177f7da 100644 (file)
@@ -193,7 +193,7 @@ Unknown or unsupported selector (eg. pseudo-class).
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 474e162ac6ac8a20af4f5c21cf15da594dc64dbb..57183913997cbd2abb75620ad1b19c09c34f6b73 100644 (file)
@@ -379,7 +379,7 @@ to a single parent.</td>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3f179bcdf53e10e3718bf15e1381f2ed3b393343..8247f61199b4e9ca152c7ae631e15c7c7f4a09ae 100644 (file)
@@ -145,7 +145,7 @@ with older versions of lxml or ElementTree.</li>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 88751d06dcc645077b50cd0b4543f738dc283269..40c0608e4122ded5f462c9e00d3b13e2f8186e39 100644 (file)
@@ -280,7 +280,7 @@ Assertion failed.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4ed12d45d1a9eb2255c46eee81c653339da31099..56b93277dcd0e8f2fe6e397bc87881344e0a392e 100644 (file)
@@ -256,7 +256,7 @@ page was last updated. </p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 51c19ed739bf221747fa919066d7963cbf03b628..0d601dea669784e493563e6b1908c9779a464849 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bbd75b4bcafe41c2d772bd4d1e233d51f777edd4..b9fd9a90668c058d017b0d120a9ce80cfb584eb4 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 99f0468f31f3e90754bb8c51cdc521c8691fb718..c669ddcf0e8e3ec6fc43bc376d7c50f9f93bb215 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 11b85072bd7b46372ebebce0c467f40ec0d143cb..f88fce3d5657c268bd0e2ca576005e903cbb5e98 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 77355bcdf972aa4ff75fb00395e91e19a4802e60..4f74d295f9c2f357d010ef81b7a32250680f5881 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fc0c15389228b07a602f3ff2721e750cc02eb41b..3985a9701c8b687c0745efd4e4e32389da35d48d 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0d11aaef6c7cece85a865029f9219e82c407a757..72a6be330d70ec9a00337e623eb7924f3d311a9b 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c5b9e19e82b143844af903955cc4ac7e812b45b0..74a639dd525bb919e903619c89af6903e82845aa 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 294acc95b5c575a91fe7d2d7b41f8e3d17915587..be8c6ed4d17218f5575cddb2ba5d6b21af395a8f 100644 (file)
 <span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ECONNREFUSED">IO_ECONNREFUSED</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_WRITE">IO_WRITE</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree._ElementUnicodeResult-class.html#is_attribute">is_attribute</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.etree._ElementUnicodeResult-class.html" onclick="show_private();">_ElementUnicodeResult</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorDomains-class.html#I18N">I18N</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorDomains-class.html">ErrorDomains</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EDEADLK">IO_EDEADLK</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree._ElementUnicodeResult-class.html#is_attribute">is_attribute</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.etree._ElementUnicodeResult-class.html" onclick="show_private();">_ElementUnicodeResult</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.html.diff-module.html#is_end_tag">is_end_tag()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#I18N_CONV_FAILED">I18N_CONV_FAILED</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EDOM">IO_EDOM</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.html.diff-module.html#is_end_tag">is_end_tag()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.common_imports-module.html#IS_PYPY">IS_PYPY</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.common_imports-module.html">lxml.tests.common_imports</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#I18N_EXCESS_HANDLER">I18N_EXCESS_HANDLER</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EEXIST">IO_EEXIST</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.common_imports-module.html#IS_PYPY">IS_PYPY</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.common_imports-module.html#IS_PYTHON3">IS_PYTHON3</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.common_imports-module.html">lxml.tests.common_imports</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EFAULT">IO_EFAULT</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.common_imports-module.html#IS_PYTHON3">IS_PYTHON3</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.common_imports-module.html">lxml.tests.common_imports</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt-module.html#is_python3">is_python3</a><br />
+<span class="index-where">(in&nbsp;<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.etree.ErrorTypes-class.html#I18N_NO_NAME">I18N_NO_NAME</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EFBIG">IO_EFBIG</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt-module.html#is_python3">is_python3</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt-module.html">lxml.tests.test_xslt</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.html.diff-module.html#is_start_tag">is_start_tag()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#I18N_NO_OUTPUT">I18N_NO_OUTPUT</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EINPROGRESS">IO_EINPROGRESS</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.html.diff-module.html#is_start_tag">is_start_tag()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree._ElementUnicodeResult-class.html#is_tail">is_tail</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.etree._ElementUnicodeResult-class.html" onclick="show_private();">_ElementUnicodeResult</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#IFRAME">IFRAME</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EINTR">IO_EINTR</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree._ElementUnicodeResult-class.html#is_tail">is_tail</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree._ElementUnicodeResult-class.html#is_text">is_text</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._ElementUnicodeResult-class.html" onclick="show_private();">_ElementUnicodeResult</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EINVAL">IO_EINVAL</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree._ElementUnicodeResult-class.html#is_text">is_text</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.etree._ElementUnicodeResult-class.html" onclick="show_private();">_ElementUnicodeResult</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.html.diff-module.html#is_word">is_word()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.ElementInclude-module.html#include">include()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.ElementInclude-module.html">lxml.ElementInclude</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EIO">IO_EIO</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.html.diff-module.html#is_word">is_word()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree-module.html#iselement">iselement()</a><br />
+<span class="index-where">(in&nbsp;<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.ETreeXIncludeTestCase-class.html#include">include()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeXIncludeTestCase-class.html">ETreeXIncludeTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EISCONN">IO_EISCONN</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree-module.html#iselement">iselement()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.html.builder-module.html#ISINDEX">ISINDEX</a><br />
+<span class="index-where">(in&nbsp;<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.ElementIncludeTestCase-class.html#include">include()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ElementIncludeTestCase-class.html">ElementIncludeTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EISDIR">IO_EISDIR</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.html.builder-module.html#ISINDEX">ISINDEX</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.isoschematron-module.html#iso_abstract_expand">iso_abstract_expand</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.isoschematron-module.html">lxml.isoschematron</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.includes-module.html">includes</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml-module.html">lxml</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EMFILE">IO_EMFILE</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.isoschematron-module.html#iso_abstract_expand">iso_abstract_expand</a><br />
+<td width="33%" class="link-index"><a href="lxml.isoschematron-module.html#iso_dsdl_include">iso_dsdl_include</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.isoschematron-module.html">lxml.isoschematron</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare-module.html">lxml.tests.test_doctestcompare</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EMLINK">IO_EMLINK</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.isoschematron-module.html#iso_dsdl_include">iso_dsdl_include</a><br />
+<td width="33%" class="link-index"><a href="lxml.isoschematron-module.html#iso_svrl_for_xslt1">iso_svrl_for_xslt1</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.isoschematron-module.html">lxml.isoschematron</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.etree._Element-class.html" onclick="show_private();">_Element</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EMSGSIZE">IO_EMSGSIZE</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.isoschematron-module.html#iso_svrl_for_xslt1">iso_svrl_for_xslt1</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.isoschematron-module.html">lxml.isoschematron</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="lxml.html.builder-module.html#INPUT">INPUT</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENAMETOOLONG">IO_ENAMETOOLONG</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.isoschematron-module.html">isoschematron</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml-module.html">lxml</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.html.InputElement-class.html">InputElement</a></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENCODER">IO_ENCODER</a><br />
+<td width="33%" class="link-index"><a href="lxml.html.clean.Cleaner-class.html#inline_style">inline_style</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.html.clean.Cleaner-class.html">Cleaner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENAMETOOLONG">IO_ENAMETOOLONG</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html#item_count">item_count</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html">ThreadPipelineTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.html.InputGetter-class.html">InputGetter</a></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENETUNREACH">IO_ENETUNREACH</a><br />
+<td width="33%" class="link-index"><a href="lxml.html.builder-module.html#INPUT">INPUT</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENCODER">IO_ENCODER</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._Attrib-class.html#items">items()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._Attrib-class.html" onclick="show_private();">_Attrib</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.html.InputMixin-class.html">InputMixin</a></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENFILE">IO_ENFILE</a><br />
+<td width="33%" class="link-index"><a href="lxml.html.InputElement-class.html">InputElement</a></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENETUNREACH">IO_ENETUNREACH</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#items">items()</a><br />
 <span class="index-where">(in&nbsp;<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.html.FormElement-class.html#inputs">inputs</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.html.FormElement-class.html">FormElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENODEV">IO_ENODEV</a><br />
+<td width="33%" class="link-index"><a href="lxml.html.InputGetter-class.html">InputGetter</a></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENFILE">IO_ENFILE</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._IDDict-class.html#items">items()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._IDDict-class.html" onclick="show_private();">_IDDict</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.html.builder-module.html#INS">INS</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOENT">IO_ENOENT</a><br />
+<td width="33%" class="link-index"><a href="lxml.html.InputMixin-class.html">InputMixin</a></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENODEV">IO_ENODEV</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#iter">iter()</a><br />
 <span class="index-where">(in&nbsp;<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.html.diff.InsensitiveSequenceMatcher-class.html">InsensitiveSequenceMatcher</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOEXEC">IO_ENOEXEC</a><br />
+<td width="33%" class="link-index"><a href="lxml.html.FormElement-class.html#inputs">inputs</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.html.FormElement-class.html">FormElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOENT">IO_ENOENT</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._ElementTree-class.html#iter">iter()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._ElementTree-class.html" onclick="show_private();">_ElementTree</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#insert">insert()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.etree._Element-class.html" onclick="show_private();">_Element</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOLCK">IO_ENOLCK</a><br />
+<td width="33%" class="link-index"><a href="lxml.html.builder-module.html#INS">INS</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOEXEC">IO_ENOEXEC</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#iterancestors">iterancestors()</a><br />
 <span class="index-where">(in&nbsp;<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.html.formfill.DefaultErrorCreator-class.html#insert_before">insert_before</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.html.formfill.DefaultErrorCreator-class.html">DefaultErrorCreator</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOMEM">IO_ENOMEM</a><br />
+<td width="33%" class="link-index"><a href="lxml.html.diff.InsensitiveSequenceMatcher-class.html">InsensitiveSequenceMatcher</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOLCK">IO_ENOLCK</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.selftest-module.html#iterators">iterators()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.selftest-module.html">lxml.tests.selftest</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.html.formfill-module.html#insert_errors">insert_errors()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.html.formfill-module.html">lxml.html.formfill</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOSPC">IO_ENOSPC</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#insert">insert()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.etree._Element-class.html" onclick="show_private();">_Element</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOMEM">IO_ENOMEM</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#iterchildren">iterchildren()</a><br />
 <span class="index-where">(in&nbsp;<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.html.formfill-module.html#insert_errors_html">insert_errors_html()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.html.formfill-module.html">lxml.html.formfill</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOSYS">IO_ENOSYS</a><br />
+<td width="33%" class="link-index"><a href="lxml.html.formfill.DefaultErrorCreator-class.html#insert_before">insert_before</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.html.formfill.DefaultErrorCreator-class.html">DefaultErrorCreator</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOSPC">IO_ENOSPC</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#iterdescendants">iterdescendants()</a><br />
 <span class="index-where">(in&nbsp;<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.doctestcompare-module.html#install">install()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.doctestcompare-module.html">lxml.doctestcompare</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOTDIR">IO_ENOTDIR</a><br />
+<td width="33%" class="link-index"><a href="lxml.html.formfill-module.html#insert_errors">insert_errors()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.html.formfill-module.html">lxml.html.formfill</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOSYS">IO_ENOSYS</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.DTD-class.html#iterelements">iterelements()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.DTD-class.html">DTD</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.doctestcompare._RestoreChecker-class.html#install_clone">install_clone()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.doctestcompare._RestoreChecker-class.html" onclick="show_private();">_RestoreChecker</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOTEMPTY">IO_ENOTEMPTY</a><br />
+<td width="33%" class="link-index"><a href="lxml.html.formfill-module.html#insert_errors_html">insert_errors_html()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.html.formfill-module.html">lxml.html.formfill</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOTDIR">IO_ENOTDIR</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.common_imports.LargeFileLike-class.html#iterelements">iterelements()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.common_imports.LargeFileLike-class.html">LargeFileLike</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.doctestcompare._RestoreChecker-class.html#install_dt_self">install_dt_self()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.doctestcompare._RestoreChecker-class.html" onclick="show_private();">_RestoreChecker</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOTSOCK">IO_ENOTSOCK</a><br />
+<td width="33%" class="link-index"><a href="lxml.doctestcompare-module.html#install">install()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.doctestcompare-module.html">lxml.doctestcompare</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOTEMPTY">IO_ENOTEMPTY</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.common_imports.LargeFileLikeUnicode-class.html#iterelements">iterelements()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.common_imports.LargeFileLikeUnicode-class.html">LargeFileLikeUnicode</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.objectify.IntElement-class.html">IntElement</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.objectify-module.html">lxml.objectify</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOTSUP">IO_ENOTSUP</a><br />
+<td width="33%" class="link-index"><a href="lxml.doctestcompare._RestoreChecker-class.html#install_clone">install_clone()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.doctestcompare._RestoreChecker-class.html" onclick="show_private();">_RestoreChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOTSOCK">IO_ENOTSOCK</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.DTD-class.html#iterentities">iterentities()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.DTD-class.html">DTD</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.selftest-module.html#interface">interface()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.selftest-module.html">lxml.tests.selftest</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOTTY">IO_ENOTTY</a><br />
+<td width="33%" class="link-index"><a href="lxml.doctestcompare._RestoreChecker-class.html#install_dt_self">install_dt_self()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.doctestcompare._RestoreChecker-class.html" onclick="show_private();">_RestoreChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOTSUP">IO_ENOTSUP</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#iterfind">iterfind()</a><br />
 <span class="index-where">(in&nbsp;<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.etree.DocInfo-class.html#internalDTD">internalDTD</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.etree.DocInfo-class.html" onclick="show_private();">DocInfo</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENXIO">IO_ENXIO</a><br />
+<td width="33%" class="link-index"><a href="lxml.objectify.IntElement-class.html">IntElement</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.objectify-module.html">lxml.objectify</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENOTTY">IO_ENOTTY</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._ElementTree-class.html#iterfind">iterfind()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._ElementTree-class.html" onclick="show_private();">_ElementTree</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_unicode-module.html#invalid_tag">invalid_tag</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode-module.html">lxml.tests.test_unicode</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EPERM">IO_EPERM</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.selftest-module.html#interface">interface()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.selftest-module.html">lxml.tests.selftest</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ENXIO">IO_ENXIO</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._Attrib-class.html#iteritems">iteritems()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._Attrib-class.html" onclick="show_private();">_Attrib</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorDomains-class.html#IO">IO</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorDomains-class.html">ErrorDomains</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EPIPE">IO_EPIPE</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.DocInfo-class.html#internalDTD">internalDTD</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.etree.DocInfo-class.html" onclick="show_private();">DocInfo</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EPERM">IO_EPERM</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._IDDict-class.html#iteritems">iteritems()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._IDDict-class.html" onclick="show_private();">_IDDict</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_BUFFER_FULL">IO_BUFFER_FULL</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ERANGE">IO_ERANGE</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_unicode-module.html#invalid_tag">invalid_tag</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode-module.html">lxml.tests.test_unicode</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EPIPE">IO_EPIPE</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._Attrib-class.html#iterkeys">iterkeys()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._Attrib-class.html" onclick="show_private();">_Attrib</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EACCES">IO_EACCES</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EROFS">IO_EROFS</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorDomains-class.html#IO">IO</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorDomains-class.html">ErrorDomains</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ERANGE">IO_ERANGE</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._IDDict-class.html#iterkeys">iterkeys()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._IDDict-class.html" onclick="show_private();">_IDDict</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EADDRINUSE">IO_EADDRINUSE</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_BUFFER_FULL">IO_BUFFER_FULL</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ESPIPE">IO_ESPIPE</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EROFS">IO_EROFS</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html-module.html#iterlinks">iterlinks</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html-module.html">lxml.html</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EAFNOSUPPORT">IO_EAFNOSUPPORT</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EACCES">IO_EACCES</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ESRCH">IO_ESRCH</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ESPIPE">IO_ESPIPE</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.HtmlMixin-class.html#iterlinks">iterlinks()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.HtmlMixin-class.html">HtmlMixin</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EAGAIN">IO_EAGAIN</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EADDRINUSE">IO_EADDRINUSE</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ETIMEDOUT">IO_ETIMEDOUT</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ESRCH">IO_ESRCH</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.iterparse-class.html">iterparse</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EALREADY">IO_EALREADY</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EAFNOSUPPORT">IO_EAFNOSUPPORT</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EXDEV">IO_EXDEV</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ETIMEDOUT">IO_ETIMEDOUT</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.selftest-module.html#iterparse">iterparse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.selftest-module.html">lxml.tests.selftest</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EBADF">IO_EBADF</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EAGAIN">IO_EAGAIN</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_FLUSH">IO_FLUSH</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EXDEV">IO_EXDEV</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#itersiblings">itersiblings()</a><br />
 <span class="index-where">(in&nbsp;<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.etree.ErrorTypes-class.html#IO_EBADMSG">IO_EBADMSG</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EALREADY">IO_EALREADY</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_LOAD_ERROR">IO_LOAD_ERROR</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_FLUSH">IO_FLUSH</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#itertext">itertext()</a><br />
 <span class="index-where">(in&nbsp;<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.etree.ErrorTypes-class.html#IO_EBUSY">IO_EBUSY</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EBADF">IO_EBADF</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_NETWORK_ATTEMPT">IO_NETWORK_ATTEMPT</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_LOAD_ERROR">IO_LOAD_ERROR</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._Attrib-class.html#itervalues">itervalues()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._Attrib-class.html" onclick="show_private();">_Attrib</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ECANCELED">IO_ECANCELED</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EBADMSG">IO_EBADMSG</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_NO_INPUT">IO_NO_INPUT</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_NETWORK_ATTEMPT">IO_NETWORK_ATTEMPT</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._IDDict-class.html#itervalues">itervalues()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._IDDict-class.html" onclick="show_private();">_IDDict</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ECHILD">IO_ECHILD</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_EBUSY">IO_EBUSY</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_UNKNOWN">IO_UNKNOWN</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_NO_INPUT">IO_NO_INPUT</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.iterwalk-class.html">iterwalk</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
 </tr>
+<tr>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ECANCELED">IO_ECANCELED</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_UNKNOWN">IO_UNKNOWN</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_ECHILD">IO_ECHILD</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#IO_WRITE">IO_WRITE</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
 </table>
 </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 Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 25d212e31a8ae37d48152c61c1ab0ccd96b12f9b..8fd0a02a499020e1fdcaa8dc6ac892f73c542a9c 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3a785114ce63ec2394c7acc799809f2ee43fabc3..296cbf98a1b176f5a1472d060fe779fcf4637b4d 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a273944dbb739cbee27dbfa7664251e960072cd1..9efc9a7581a206e709d72bb8cc85b3e47d64d47e 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cc9f583940ca283dfeff23c3cd933b9182095c62..9cc1fcd93d47fdf97e8a3f88dcd912b9fb36c709 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e2f24a36b5897426bcd73de4fcab7f33a21fe425..c61173206c1aa5f29ef63ea559fb036277a47089 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 14c2489c12498c02cda6b45491efbfa2b1c02533..cd35951f811e3194d610a49c0f6d3879da025938 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 57d6c018897655f6396c5fccd7dea7ca6783d084..616840caf73aaaf46344967b853eec10f7bdd6fa 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 520237c313db094ed28f0fdf2786f9ecc214ef28..7e5e9091a022d43449c34f0b46bdd352e3c41609 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d72250aee31d5b37cb445cf23fe88c89b960e275..238af21e86fec63ed95bbdb23b43252456c9b919 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a53ff302e0d85e95bf8164329fefeb152f90005e..8180c2ecd7a02ed559a160cb4b92b985da7abac0 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a5c09dc8fce08fa7658b53a6b3c33015b3b5f678..0fd83f6fd97679a4e87c3073381c9a908f65bcdb 100644 (file)
 <span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase-class.html#test_flush">test_flush()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase-class.html">TempPathXmlFileTestCase</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&nbsp;<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_setitem_assert">test_setitem_assert()</a><br />
+<span class="index-where">(in&nbsp;<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.defs-module.html#table_tags">table_tags</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.defs-module.html">lxml.html.defs</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_flush">test_flush()</a><br />
 <span class="index-where">(in&nbsp;<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_setitem2">test_setitem2()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_fromstring">test_fromstring()</a><br />
 <span class="index-where">(in&nbsp;<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_setitem_assert">test_setitem_assert()</a><br />
-<span class="index-where">(in&nbsp;<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_replace">test_setitem_replace()</a><br />
+<span class="index-where">(in&nbsp;<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#tag">tag</a><br />
 <span class="index-where">(in&nbsp;<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_fromstringlist">test_fromstringlist()</a><br />
 <span class="index-where">(in&nbsp;<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_indexerror">test_setitem_indexerror()</a><br />
-<span class="index-where">(in&nbsp;<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_setitem_string">test_setitem_string()</a><br />
+<span class="index-where">(in&nbsp;<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._Entity-class.html#tag">tag</a><br />
 <span class="index-where">(in&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_characters">test_fromstringlist_characters()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_setitem_string_special">test_setitem_string_special()</a><br />
+<span class="index-where">(in&nbsp;<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._ProcessingInstruction-class.html#tag">tag</a><br />
 <span class="index-where">(in&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_single">test_fromstringlist_single()</a><br />
 <span class="index-where">(in&nbsp;<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_setitem_string">test_setitem_string()</a><br />
-<span class="index-where">(in&nbsp;<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_setitem_tail">test_setitem_tail()</a><br />
+<span class="index-where">(in&nbsp;<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="xml.etree.ElementTree.Element-class.html#tag">tag</a><br />
 <span class="index-where">(in&nbsp;<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_getiterator">test_getiterator()</a><br />
 <span class="index-where">(in&nbsp;<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_setitem_string_special">test_setitem_string_special()</a><br />
-<span class="index-where">(in&nbsp;<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">test_setslice()</a><br />
+<span class="index-where">(in&nbsp;<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_xpathevaluator-module.html#tag">tag()</a><br />
 <span class="index-where">(in&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_getiterator_empty">test_getiterator_empty()</a><br />
 <span class="index-where">(in&nbsp;<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_tail">test_setitem_tail()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_getiterator_filter">test_getiterator_filter()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_all">test_getiterator_filter_all()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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&nbsp;<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&nbsp;<a href="lxml.html.diff-module.html">lxml.html.diff</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&nbsp;<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_all_empty">test_setslice_all_empty()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_filter_comment">test_getiterator_filter_comment()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_all_replace_reversed">test_setslice_all_replace_reversed()</a><br />
+<span class="index-where">(in&nbsp;<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&nbsp;<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_getiterator_filter_element">test_getiterator_filter_element()</a><br />
 <span class="index-where">(in&nbsp;<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_all_replace">test_setslice_all_replace()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_getiterator_filter_entities">test_getiterator_filter_entities()</a><br />
 <span class="index-where">(in&nbsp;<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_all_replace_reversed">test_setslice_all_replace_reversed()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_getiterator_filter_local_name">test_getiterator_filter_local_name()</a><br />
 <span class="index-where">(in&nbsp;<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_all_replace_reversed_ns1">test_setslice_all_replace_reversed_ns1()</a><br />
-<span class="index-where">(in&nbsp;<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_complete">test_setslice_complete()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TBODY">TBODY</a><br />
 <span class="index-where">(in&nbsp;<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_getiterator_filter_multiple">test_getiterator_filter_multiple()</a><br />
 <span class="index-where">(in&nbsp;<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_all_replace_reversed_ns2">test_setslice_all_replace_reversed_ns2()</a><br />
-<span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TD">TD</a><br />
 <span class="index-where">(in&nbsp;<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_getiterator_filter_multiple_tuple">test_getiterator_filter_multiple_tuple()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_empty">test_setslice_empty()</a><br />
+<span class="index-where">(in&nbsp;<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.common_imports.HelperTestCase-class.html#tearDown">tearDown()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.common_imports.HelperTestCase-class.html">HelperTestCase</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&nbsp;<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_elements">test_setslice_elements()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
 <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&nbsp;<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_empty">test_setslice_empty()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_getiterator_filter_with_text">test_getiterator_filter_with_text()</a><br />
 <span class="index-where">(in&nbsp;<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_empty">test_setslice_empty()</a><br />
-<span class="index-where">(in&nbsp;<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_end_exact">test_setslice_end_exact()</a><br />
+<span class="index-where">(in&nbsp;<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.TempPathXmlFileTestCase-class.html#tearDown">tearDown()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase-class.html">TempPathXmlFileTestCase</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&nbsp;<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_end">test_setslice_end()</a><br />
-<span class="index-where">(in&nbsp;<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_insert">test_setslice_insert()</a><br />
+<span class="index-where">(in&nbsp;<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_incremental_xmlfile._XmlFileTestCaseBase-class.html#tearDown">tearDown()</a><br />
 <span class="index-where">(in&nbsp;<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_getnext">test_getnext()</a><br />
 <span class="index-where">(in&nbsp;<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_exact">test_setslice_end_exact()</a><br />
-<span class="index-where">(in&nbsp;<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_insert_neg">test_setslice_insert_neg()</a><br />
+<span class="index-where">(in&nbsp;<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_io._IOTestCaseBase-class.html#tearDown">tearDown()</a><br />
 <span class="index-where">(in&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_getparent">test_getparent()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_negative">test_setslice_negative()</a><br />
+<span class="index-where">(in&nbsp;<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_nsclasses.ETreeNamespaceClassesTestCase-class.html#tearDown">tearDown()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
 <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&nbsp;<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&nbsp;<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_negative2">test_setslice_negative2()</a><br />
+<span class="index-where">(in&nbsp;<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#tearDown">tearDown()</a><br />
 <span class="index-where">(in&nbsp;<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_getroottree">test_getroottree()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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&nbsp;<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_pyclasslookup.PyClassLookupTestCase-class.html#tearDown">tearDown()</a><br />
 <span class="index-where">(in&nbsp;<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_getslice">test_getslice()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.doctestcompare-module.html#temp_install">temp_install()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.doctestcompare-module.html">lxml.doctestcompare</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&nbsp;<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_setslice_partial">test_setslice_partial()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_getslice_negative">test_getslice_negative()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_objectify.ObjectifyTestCase-class.html#test_getslice_partial">test_getslice_partial()</a><br />
 <span class="index-where">(in&nbsp;<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_setslice_partial_neg">test_setslice_partial_neg()</a><br />
-<span class="index-where">(in&nbsp;<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_single">test_setslice_single()</a><br />
+<span class="index-where">(in&nbsp;<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_unicode.UnicodeTestCase-class.html#test__str">test__str()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</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&nbsp;<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_setslice_partial_wrong_length">test_setslice_partial_wrong_length()</a><br />
-<span class="index-where">(in&nbsp;<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">test_setslice_step()</a><br />
+<span class="index-where">(in&nbsp;<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">test_addattr()</a><br />
 <span class="index-where">(in&nbsp;<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_step">test_getslice_step()</a><br />
 <span class="index-where">(in&nbsp;<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_single">test_setslice_single()</a><br />
-<span class="index-where">(in&nbsp;<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&nbsp;<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_element">test_addattr_element()</a><br />
 <span class="index-where">(in&nbsp;<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_text">test_getslice_text()</a><br />
 <span class="index-where">(in&nbsp;<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">test_setslice_step()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_html5_doctype">test_html5_doctype()</a><br />
 <span class="index-where">(in&nbsp;<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_setslice_step_negative">test_setslice_step_negative()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_html_base">test_html_base()</a><br />
 <span class="index-where">(in&nbsp;<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_negative2">test_setslice_step_negative2()</a><br />
-<span class="index-where">(in&nbsp;<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_tail">test_setslice_tail()</a><br />
+<span class="index-where">(in&nbsp;<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_addnext_comment">test_addnext_comment()</a><br />
 <span class="index-where">(in&nbsp;<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_html_base_tag">test_html_base_tag()</a><br />
 <span class="index-where">(in&nbsp;<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_overrun">test_setslice_step_overrun()</a><br />
-<span class="index-where">(in&nbsp;<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_shallowcopy">test_shallowcopy()</a><br />
+<span class="index-where">(in&nbsp;<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_addnext_cycle">test_addnext_cycle()</a><br />
 <span class="index-where">(in&nbsp;<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_HTML_base_url_docinfo">test_HTML_base_url_docinfo()</a><br />
 <span class="index-where">(in&nbsp;<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_tail">test_setslice_tail()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_html_decl">test_html_decl()</a><br />
 <span class="index-where">(in&nbsp;<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_shallowcopy">test_shallowcopy()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_element_name_colon">test_html_element_name_colon()</a><br />
 <span class="index-where">(in&nbsp;<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_shallowcopy_elementtree">test_shallowcopy_elementtree()</a><br />
-<span class="index-where">(in&nbsp;<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._XMLPullParserTest-class.html#test_simple_xml">test_simple_xml()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
 </tr>
 <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&nbsp;<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_element_name_empty">test_html_element_name_empty()</a><br />
 <span class="index-where">(in&nbsp;<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_simple">test_simple()</a><br />
-<span class="index-where">(in&nbsp;<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._XMLPullParserTest-class.html#test_simple_xml_with_ns">test_simple_xml_with_ns()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
 </tr>
 <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&nbsp;<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_element_name_quote">test_html_element_name_quote()</a><br />
 <span class="index-where">(in&nbsp;<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._XMLPullParserTest-class.html#test_simple_xml">test_simple_xml()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</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&nbsp;<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_root_comment">test_addnext_root_comment()</a><br />
 <span class="index-where">(in&nbsp;<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_element_name_space">test_html_element_name_space()</a><br />
 <span class="index-where">(in&nbsp;<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._XMLPullParserTest-class.html#test_simple_xml_with_ns">test_simple_xml_with_ns()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</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&nbsp;<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_root_pi">test_addnext_root_pi()</a><br />
 <span class="index-where">(in&nbsp;<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_feed_parser">test_html_feed_parser()</a><br />
 <span class="index-where">(in&nbsp;<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_element">test_sourceline_element()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_feed_parser_chunky">test_html_feed_parser_chunky()</a><br />
 <span class="index-where">(in&nbsp;<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_iterparse_end">test_sourceline_iterparse_end()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_feed_parser_more_tags">test_html_feed_parser_more_tags()</a><br />
 <span class="index-where">(in&nbsp;<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_iterparse_start">test_sourceline_iterparse_start()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_file_error">test_html_file_error()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_fromstring_target_exceptions">test_html_fromstring_target_exceptions()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_standard_lookup">test_standard_lookup()</a><br />
+<span class="index-where">(in&nbsp;<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_noops">test_addprevious_noops()</a><br />
 <span class="index-where">(in&nbsp;<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_iterparse">test_html_iterparse()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_str">test_str()</a><br />
+<span class="index-where">(in&nbsp;<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_pi">test_addprevious_pi()</a><br />
 <span class="index-where">(in&nbsp;<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_iterparse_broken">test_html_iterparse_broken()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_strip_attributes">test_strip_attributes()</a><br />
+<span class="index-where">(in&nbsp;<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_addprevious_root_comment">test_addprevious_root_comment()</a><br />
 <span class="index-where">(in&nbsp;<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_iterparse_broken_no_recover">test_html_iterparse_broken_no_recover()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_strip_attributes_ns">test_strip_attributes_ns()</a><br />
+<span class="index-where">(in&nbsp;<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_addprevious_root_pi">test_addprevious_root_pi()</a><br />
 <span class="index-where">(in&nbsp;<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_iterparse_file">test_html_iterparse_file()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_iterparse_start">test_html_iterparse_start()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_iterparse_stop_short">test_html_iterparse_stop_short()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_doctype_empty">test_html_parser_target_doctype_empty()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_html_parser_target_doctype_html">test_html_parser_target_doctype_html()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_doctype_html_full">test_html_parser_target_doctype_html_full()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_html_parser_target_exceptions">test_html_parser_target_exceptions()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_html_parser_target_tag">test_html_parser_target_tag()</a><br />
 <span class="index-where">(in&nbsp;<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_ns">test_strip_tags_ns()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_html_prefix_nsmap">test_html_prefix_nsmap()</a><br />
 <span class="index-where">(in&nbsp;<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_pi_comment">test_strip_tags_pi_comment()</a><br />
-<span class="index-where">(in&nbsp;<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_data_element_nsmap_custom">test_sub_data_element_nsmap_custom()</a><br />
+<span class="index-where">(in&nbsp;<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_attrib_deepcopy">test_attrib_deepcopy()</a><br />
 <span class="index-where">(in&nbsp;<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_html_subelement_name_colon">test_html_subelement_name_colon()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_data_element_nsmap_custom_prefixes">test_sub_data_element_nsmap_custom_prefixes()</a><br />
+<span class="index-where">(in&nbsp;<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_attrib_dict">test_attrib_dict()</a><br />
 <span class="index-where">(in&nbsp;<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_html_subelement_name_empty">test_html_subelement_name_empty()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_html_subelement_name_quote">test_html_subelement_name_quote()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_html_subelement_name_space">test_html_subelement_name_space()</a><br />
 <span class="index-where">(in&nbsp;<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_default">test_sub_data_element_nsmap_default()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_http_io.HttpIOTestCase-class.html#test_http_client">test_http_client()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io.HttpIOTestCase-class.html">HttpIOTestCase</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 />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_http_io.HttpIOTestCase-class.html#test_http_client_404">test_http_client_404()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io.HttpIOTestCase-class.html">HttpIOTestCase</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 />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_http_io.HttpIOTestCase-class.html#test_http_client_gzip">test_http_client_gzip()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io.HttpIOTestCase-class.html">HttpIOTestCase</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&nbsp;<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_subelement">test_subelement()</a><br />
+<span class="index-where">(in&nbsp;<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_pop_invalid_args">test_attrib_pop_invalid_args()</a><br />
 <span class="index-where">(in&nbsp;<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_http_io-module.html">test_http_io</a><br />
 <span class="index-where">(in&nbsp;<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_element_nsmap_empty">test_sub_element_nsmap_empty()</a><br />
-<span class="index-where">(in&nbsp;<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_subelement_attribute_invalid">test_subelement_attribute_invalid()</a><br />
+<span class="index-where">(in&nbsp;<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_pop_unknown">test_attrib_pop_unknown()</a><br />
 <span class="index-where">(in&nbsp;<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_ietf_decl">test_ietf_decl()</a><br />
 <span class="index-where">(in&nbsp;<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_subelement">test_subelement()</a><br />
-<span class="index-where">(in&nbsp;<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&nbsp;<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_set_clear">test_attrib_set_clear()</a><br />
 <span class="index-where">(in&nbsp;<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_ietf_decl">test_ietf_decl()</a><br />
 <span class="index-where">(in&nbsp;<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_subelement_attribute_invalid">test_subelement_attribute_invalid()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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.EncodingsTestCase-class.html#test_illegal_utf8">test_illegal_utf8()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.EncodingsTestCase-class.html">EncodingsTestCase</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 />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_unicode.EncodingsTestCase-class.html#test_illegal_utf8_recover">test_illegal_utf8_recover()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.EncodingsTestCase-class.html">EncodingsTestCase</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 />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_include_paths">test_include_paths()</a><br />
 <span class="index-where">(in&nbsp;<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_quote">test_subelement_name_quote()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_incremental_xmlfile-module.html">test_incremental_xmlfile</a><br />
 <span class="index-where">(in&nbsp;<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_space">test_subelement_name_space()</a><br />
-<span class="index-where">(in&nbsp;<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&nbsp;<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_attribute_extra_duplicate">test_attribute_extra_duplicate()</a><br />
 <span class="index-where">(in&nbsp;<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_index">test_index()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_with_attributes">test_subelement_with_attributes()</a><br />
+<span class="index-where">(in&nbsp;<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_gets_namespace_prefix_on_merge">test_attribute_gets_namespace_prefix_on_merge()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_reference">test_subelement_reference()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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 />
 <span class="index-where">(in&nbsp;<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&nbsp;<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&nbsp;<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.ETreeOnlyTestCase-class.html#test_attribute_has_key">test_attribute_has_key()</a><br />
 <span class="index-where">(in&nbsp;<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 />
 <span class="index-where">(in&nbsp;<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&nbsp;<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&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_attribute_items">test_attribute_items()</a><br />
 <span class="index-where">(in&nbsp;<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_insert_tail">test_insert_tail()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_attribute_items2">test_attribute_items2()</a><br />
 <span class="index-where">(in&nbsp;<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_internal_dtds">test_internal_dtds()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</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&nbsp;<a href="lxml.tests.test_builder-module.html">lxml.tests.test_builder</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&nbsp;<a href="lxml.tests.test_css-module.html">lxml.tests.test_css</a>)</span></td>
 </tr>
 <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&nbsp;<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_invalid_decl_1">test_invalid_decl_1()</a><br />
 <span class="index-where">(in&nbsp;<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-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup-module.html">lxml.tests.test_classlookup</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare-module.html">lxml.tests.test_doctestcompare</a>)</span></td>
 </tr>
 <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&nbsp;<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_invalid_decl_2">test_invalid_decl_2()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</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&nbsp;<a href="lxml.tests.test_css-module.html">lxml.tests.test_css</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&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_attribute_keeps_namespace_prefix_on_merge">test_attribute_keeps_namespace_prefix_on_merge()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare-module.html">lxml.tests.test_doctestcompare</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementpath-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementpath-module.html">lxml.tests.test_elementpath</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_keeps_namespace_prefix_on_merge_with_nons">test_attribute_keeps_namespace_prefix_on_merge_with_nons()</a><br />
 <span class="index-where">(in&nbsp;<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_iselement">test_iselement()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_dtd-module.html">lxml.tests.test_dtd</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&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_attribute_keys">test_attribute_keys()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementpath-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementpath-module.html">lxml.tests.test_elementpath</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&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_attribute_keys2">test_attribute_keys2()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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&nbsp;<a href="lxml.tests.test_elementtree-module.html">lxml.tests.test_elementtree</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&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_attribute_keys_ns">test_attribute_keys_ns()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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&nbsp;<a href="lxml.tests.test_errors-module.html">lxml.tests.test_errors</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&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_attribute_manipulation">test_attribute_manipulation()</a><br />
 <span class="index-where">(in&nbsp;<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 />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_etree-module.html">lxml.tests.test_etree</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_http_io-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io-module.html">lxml.tests.test_http_io</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&nbsp;<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&nbsp;<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&nbsp;<a href="lxml.tests.test_htmlparser-module.html">lxml.tests.test_htmlparser</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&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip_replaced">test_attribute_namespace_roundtrip_replaced()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_http_io-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io-module.html">lxml.tests.test_http_io</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&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_attribute_set">test_attribute_set()</a><br />
 <span class="index-where">(in&nbsp;<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 />
 <span class="index-where">(in&nbsp;<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-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<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_isoschematron-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_attribute_set">test_attribute_set()</a><br />
 <span class="index-where">(in&nbsp;<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_del_child">test_iteration_del_child()</a><br />
 <span class="index-where">(in&nbsp;<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_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_io-module.html">lxml.tests.test_io</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&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_attribute_set_invalid">test_attribute_set_invalid()</a><br />
 <span class="index-where">(in&nbsp;<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_double">test_iteration_double()</a><br />
 <span class="index-where">(in&nbsp;<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_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron-module.html">lxml.tests.test_isoschematron</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&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_attribute_set_nonstring">test_attribute_set_nonstring()</a><br />
 <span class="index-where">(in&nbsp;<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_empty">test_iteration_empty()</a><br />
 <span class="index-where">(in&nbsp;<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-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses-module.html">lxml.tests.test_nsclasses</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&nbsp;<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_str">test_attribute_str()</a><br />
 <span class="index-where">(in&nbsp;<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 />
 <span class="index-where">(in&nbsp;<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_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify-module.html">lxml.tests.test_objectify</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&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_attribute_update_attrib">test_attribute_update_attrib()</a><br />
 <span class="index-where">(in&nbsp;<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 />
 <span class="index-where">(in&nbsp;<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_pyclasslookup-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup-module.html">lxml.tests.test_pyclasslookup</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&nbsp;<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_update_dict">test_attribute_update_dict()</a><br />
 <span class="index-where">(in&nbsp;<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 />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_relaxng-module.html">lxml.tests.test_relaxng</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&nbsp;<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_update_iter">test_attribute_update_iter()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</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&nbsp;<a href="lxml.tests.test_sax-module.html">lxml.tests.test_sax</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&nbsp;<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_attribute_update_sequence">test_attribute_update_sequence()</a><br />
 <span class="index-where">(in&nbsp;<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_reversed">test_iterchildren_reversed()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_schematron-module.html">lxml.tests.test_schematron</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&nbsp;<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_values">test_attribute_values()</a><br />
 <span class="index-where">(in&nbsp;<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">test_iterchildren_tag()</a><br />
 <span class="index-where">(in&nbsp;<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_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading-module.html">lxml.tests.test_threading</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&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_attribute_values">test_attribute_values()</a><br />
 <span class="index-where">(in&nbsp;<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">test_iterchildren_tag_multiple()</a><br />
 <span class="index-where">(in&nbsp;<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-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode-module.html">lxml.tests.test_unicode</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&nbsp;<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_attribute_values_ns">test_attribute_values_ns()</a><br />
 <span class="index-where">(in&nbsp;<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_posarg">test_iterchildren_tag_multiple_posarg()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_xmlschema-module.html">lxml.tests.test_xmlschema</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&nbsp;<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_xmlns_move">test_attribute_xmlns_move()</a><br />
 <span class="index-where">(in&nbsp;<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_reversed">test_iterchildren_tag_multiple_reversed()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_tag_reset_ns">test_tag_reset_ns()</a><br />
+<span class="index-where">(in&nbsp;<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_attributes_get">test_attributes_get()</a><br />
 <span class="index-where">(in&nbsp;<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_posarg">test_iterchildren_tag_posarg()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_xslt-module.html">lxml.tests.test_xslt</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&nbsp;<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&nbsp;<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_iterchildren_tag_reversed">test_iterchildren_tag_reversed()</a><br />
 <span class="index-where">(in&nbsp;<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_reset_ns">test_tag_reset_ns()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase-class.html">TempPathXmlFileTestCase</a>)</span></td>
 <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&nbsp;<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_reset_root_ns">test_tag_reset_root_ns()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_iterdescendants_tag">test_iterdescendants_tag()</a><br />
 <span class="index-where">(in&nbsp;<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_str_subclass">test_tag_str_subclass()</a><br />
-<span class="index-where">(in&nbsp;<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_doctestcompare.DoctestCompareTest-class.html#test_tags_upper_lower_case">test_tags_upper_lower_case()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
 </tr>
 <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&nbsp;<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_iterdescendants_tag_multiple">test_iterdescendants_tag_multiple()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_doctestcompare.DoctestCompareTest-class.html#test_tags_upper_lower_case_html">test_tags_upper_lower_case_html()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
 </tr>
 <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&nbsp;<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_iterparse">test_iterparse()</a><br />
 <span class="index-where">(in&nbsp;<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_doctestcompare.DoctestCompareTest-class.html#test_tags_upper_lower_case">test_tags_upper_lower_case()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</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&nbsp;<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_builder-module.html">test_builder</a><br />
 <span class="index-where">(in&nbsp;<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_iterparse_attrib_ns">test_iterparse_attrib_ns()</a><br />
 <span class="index-where">(in&nbsp;<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_doctestcompare.DoctestCompareTest-class.html#test_tags_upper_lower_case_html">test_tags_upper_lower_case_html()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</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&nbsp;<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_byte_invalid">test_byte_invalid()</a><br />
 <span class="index-where">(in&nbsp;<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_broken">test_iterparse_broken()</a><br />
 <span class="index-where">(in&nbsp;<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">test_tail()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_broken_multi_recover">test_iterparse_broken_multi_recover()</a><br />
 <span class="index-where">(in&nbsp;<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_tail1">test_tail1()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_broken_recover">test_iterparse_broken_recover()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_iterparse_cdata">test_iterparse_cdata()</a><br />
 <span class="index-where">(in&nbsp;<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_elementtree_root">test_tail_elementtree_root()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_iterparse_clear">test_iterparse_clear()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_comments">test_iterparse_comments()</a><br />
 <span class="index-where">(in&nbsp;<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_set_twice">test_tail_set_twice()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_encoding_8bit_override">test_iterparse_encoding_8bit_override()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_encoding_error">test_iterparse_encoding_error()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_iterparse_file">test_iterparse_file()</a><br />
 <span class="index-where">(in&nbsp;<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_text_empty">test_text_empty()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_iterparse_file_dtd_end">test_iterparse_file_dtd_end()</a><br />
 <span class="index-where">(in&nbsp;<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_text_escape_in">test_text_escape_in()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_iterparse_file_dtd_start">test_iterparse_file_dtd_start()</a><br />
 <span class="index-where">(in&nbsp;<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_text_escape_out">test_text_escape_out()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_iterparse_getiterator">test_iterparse_getiterator()</a><br />
 <span class="index-where">(in&nbsp;<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_text_escape_tostring">test_text_escape_tostring()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_keep_cdata">test_iterparse_keep_cdata()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_thread_create_xslt">test_thread_create_xslt()</a><br />
+<span class="index-where">(in&nbsp;<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.ETreeOnlyTestCase-class.html#test_c_api">test_c_api()</a><br />
 <span class="index-where">(in&nbsp;<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_large">test_iterparse_large()</a><br />
 <span class="index-where">(in&nbsp;<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_text_str_subclass">test_text_str_subclass()</a><br />
-<span class="index-where">(in&nbsp;<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_thread_error_log">test_thread_error_log()</a><br />
+<span class="index-where">(in&nbsp;<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_elementpath.EtreeElementPathTestCase-class.html#test_cache">test_cache()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementpath.EtreeElementPathTestCase-class.html">EtreeElementPathTestCase</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&nbsp;<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_thread_create_xslt">test_thread_create_xslt()</a><br />
+<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&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_pis">test_iterparse_pis()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</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&nbsp;<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.ETreeOnlyTestCase-class.html#test_cdata">test_cdata()</a><br />
 <span class="index-where">(in&nbsp;<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 />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</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&nbsp;<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.ETreeOnlyTestCase-class.html#test_cdata_errors">test_cdata_errors()</a><br />
 <span class="index-where">(in&nbsp;<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">test_iterparse_start()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html">ThreadPipelineTestCase</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&nbsp;<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.ETreeOnlyTestCase-class.html#test_cdata_parser">test_cdata_parser()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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&nbsp;<a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html">ThreadPipelineTestCase</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&nbsp;<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_builder.BuilderTestCase-class.html#test_cdata_solo">test_cdata_solo()</a><br />
 <span class="index-where">(in&nbsp;<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_strip">test_iterparse_strip()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</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&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_tail">test_cdata_tail()</a><br />
 <span class="index-where">(in&nbsp;<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">test_iterparse_tag()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</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&nbsp;<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&nbsp;<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_all">test_iterparse_tag_all()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_tostring_element">test_tostring_element()</a><br />
+<span class="index-where">(in&nbsp;<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_xpath">test_cdata_xpath()</a><br />
 <span class="index-where">(in&nbsp;<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">test_iterparse_tag_ns()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_all">test_iterparse_tag_ns_all()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_empty">test_iterparse_tag_ns_empty()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_tostring_method_html_with_tail">test_tostring_method_html_with_tail()</a><br />
+<span class="index-where">(in&nbsp;<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_child_addattr">test_child_addattr()</a><br />
 <span class="index-where">(in&nbsp;<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_empty_all">test_iterparse_tag_ns_empty_all()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_tree_comments">test_iterparse_tree_comments()</a><br />
 <span class="index-where">(in&nbsp;<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_tostring_method_html_with_tail">test_tostring_method_html_with_tail()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_iterparse_utf16_bom">test_iterparse_utf16_bom()</a><br />
 <span class="index-where">(in&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_tostring_method_text">test_tostring_method_text()</a><br />
-<span class="index-where">(in&nbsp;<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_tostring_method_text_unicode">test_tostring_method_text_unicode()</a><br />
+<span class="index-where">(in&nbsp;<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_child_index">test_child_index()</a><br />
 <span class="index-where">(in&nbsp;<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_iterparse_utf8_bom">test_iterparse_utf8_bom()</a><br />
 <span class="index-where">(in&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_tostring_method_text_encoding">test_tostring_method_text_encoding()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_itersiblings">test_itersiblings()</a><br />
 <span class="index-where">(in&nbsp;<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_tostring_method_text_unicode">test_tostring_method_text_unicode()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_itersiblings_tag">test_itersiblings_tag()</a><br />
 <span class="index-where">(in&nbsp;<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_tostring_none">test_tostring_none()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_itersiblings_tag_multiple">test_itersiblings_tag_multiple()</a><br />
 <span class="index-where">(in&nbsp;<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_tostring_pretty">test_tostring_pretty()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_itertext">test_itertext()</a><br />
 <span class="index-where">(in&nbsp;<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_tostring_standalone">test_tostring_standalone()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_itertext_child">test_itertext_child()</a><br />
 <span class="index-where">(in&nbsp;<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_tostring_standalone_in_out">test_tostring_standalone_in_out()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_iterwalk">test_iterwalk()</a><br />
 <span class="index-where">(in&nbsp;<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_tostring_unicode">test_tostring_unicode()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_iterwalk_attrib_ns">test_iterwalk_attrib_ns()</a><br />
 <span class="index-where">(in&nbsp;<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_tostring_unicode_element">test_tostring_unicode_element()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_iterwalk_clear">test_iterwalk_clear()</a><br />
 <span class="index-where">(in&nbsp;<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_tostring_unicode_element_tail">test_tostring_unicode_element_tail()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_iterwalk_getiterator">test_iterwalk_getiterator()</a><br />
 <span class="index-where">(in&nbsp;<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_tostring_unicode_none">test_tostring_unicode_none()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start">test_iterwalk_start()</a><br />
 <span class="index-where">(in&nbsp;<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_tostring_unicode_pretty">test_tostring_unicode_pretty()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start_end">test_iterwalk_start_end()</a><br />
 <span class="index-where">(in&nbsp;<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_tostring_with_tail">test_tostring_with_tail()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_iterwalk_tag">test_iterwalk_tag()</a><br />
 <span class="index-where">(in&nbsp;<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_tounicode">test_tounicode()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_iterwalk_tag_all">test_iterwalk_tag_all()</a><br />
 <span class="index-where">(in&nbsp;<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_tounicode_element">test_tounicode_element()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_large_sourceline_XML">test_large_sourceline_XML()</a><br />
 <span class="index-where">(in&nbsp;<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_tounicode_element_tail">test_tounicode_element_tail()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</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&nbsp;<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&nbsp;<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_tree_io">test_tree_io()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 </tr>
 <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&nbsp;<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_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_attrib">test_lookup_attrib()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_tree_io_latin1">test_tree_io_latin1()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</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&nbsp;<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_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_bool">test_lookup_bool()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_treebuilder">test_treebuilder()</a><br />
+<span class="index-where">(in&nbsp;<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_clear_tail">test_clear_tail()</a><br />
 <span class="index-where">(in&nbsp;<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_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_get">test_lookup_get()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_treebuilder_target">test_treebuilder_target()</a><br />
+<span class="index-where">(in&nbsp;<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_closing_out_of_order_in_error_case">test_closing_out_of_order_in_error_case()</a><br />
 <span class="index-where">(in&nbsp;<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_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_get_default">test_lookup_get_default()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_bool">test_type_bool()</a><br />
+<span class="index-where">(in&nbsp;<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&nbsp;<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_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getchildren">test_lookup_getchildren()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_bool_cmp">test_type_bool_cmp()</a><br />
+<span class="index-where">(in&nbsp;<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_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_comment">test_comment()</a><br />
 <span class="index-where">(in&nbsp;<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_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getitem">test_lookup_getitem()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</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 />
 <span class="index-where">(in&nbsp;<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_cmp">test_type_bool_cmp()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_float_instantiation_precision">test_type_float_instantiation_precision()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</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 />
 <span class="index-where">(in&nbsp;<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_float">test_type_float()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_float_precision">test_type_float_precision()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_getparent">test_lookup_getparent()</a><br />
 <span class="index-where">(in&nbsp;<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_int">test_type_int()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_float_precision_consistency">test_type_float_precision_consistency()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getprevious">test_lookup_getprevious()</a><br />
 <span class="index-where">(in&nbsp;<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_int_cmp">test_type_int_cmp()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_getslice">test_lookup_getslice()</a><br />
 <span class="index-where">(in&nbsp;<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_none_cmp">test_type_none_cmp()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_iter_children">test_lookup_iter_children()</a><br />
 <span class="index-where">(in&nbsp;<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_NoneType">test_type_NoneType()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_iterchildren">test_lookup_iterchildren()</a><br />
 <span class="index-where">(in&nbsp;<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_str">test_type_str()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iterchildren_tag">test_lookup_iterchildren_tag()</a><br />
 <span class="index-where">(in&nbsp;<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_str_add">test_type_str_add()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_keep_ref_assertion">test_lookup_keep_ref_assertion()</a><br />
 <span class="index-where">(in&nbsp;<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_str_as_complex">test_type_str_as_complex()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_len">test_lookup_len()</a><br />
 <span class="index-where">(in&nbsp;<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_str_as_float">test_type_str_as_float()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_prefix">test_lookup_prefix()</a><br />
 <span class="index-where">(in&nbsp;<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_str_as_int">test_type_str_as_int()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</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 />
 <span class="index-where">(in&nbsp;<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_str_cmp">test_type_str_cmp()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</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 />
 <span class="index-where">(in&nbsp;<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_str_floatliteral">test_type_str_floatliteral()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</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 />
 <span class="index-where">(in&nbsp;<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_str_hash">test_type_str_hash()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_text">test_lookup_text()</a><br />
 <span class="index-where">(in&nbsp;<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_str_intliteral">test_type_str_intliteral()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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&nbsp;<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_str_mod">test_type_str_mod()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</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&nbsp;<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_str_mod_data_elements">test_type_str_mod_data_elements()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_makeelement">test_makeelement()</a><br />
 <span class="index-where">(in&nbsp;<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_str_mul">test_type_str_mul()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</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&nbsp;<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_str_sequence">test_type_str_sequence()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_missing_attributes">test_missing_attributes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</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 />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_css.CSSTestCase-class.html">CSSTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_missing_children">test_missing_children()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</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 />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_module_HTML">test_module_HTML()</a><br />
 <span class="index-where">(in&nbsp;<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_ustr_add">test_type_ustr_add()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_module_HTML_access">test_module_HTML_access()</a><br />
 <span class="index-where">(in&nbsp;<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_ustr_floatliteral">test_type_ustr_floatliteral()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_HTML_broken">test_module_HTML_broken()</a><br />
 <span class="index-where">(in&nbsp;<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_ustr_intliteral">test_type_ustr_intliteral()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_HTML_cdata">test_module_HTML_cdata()</a><br />
 <span class="index-where">(in&nbsp;<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_ustr_mul">test_type_ustr_mul()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_HTML_pretty_print">test_module_HTML_pretty_print()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</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&nbsp;<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_type_ustr_mul">test_type_ustr_mul()</a><br />
+<span class="index-where">(in&nbsp;<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_invalid_pytype">test_data_element_data_element_arg_invalid_pytype()</a><br />
 <span class="index-where">(in&nbsp;<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_HTML_unicode">test_module_HTML_unicode()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</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&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</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&nbsp;<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_data_element_data_element_arg_invalid_xsi">test_data_element_data_element_arg_invalid_xsi()</a><br />
 <span class="index-where">(in&nbsp;<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_module_parse_fileobject_error">test_module_parse_fileobject_error()</a><br />
 <span class="index-where">(in&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_unicode_byte_invalid">test_unicode_byte_invalid()</a><br />
-<span class="index-where">(in&nbsp;<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_attr">test_unicode_attr()</a><br />
+<span class="index-where">(in&nbsp;<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&nbsp;<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_module_parse_fileobject_late_error">test_module_parse_fileobject_late_error()</a><br />
 <span class="index-where">(in&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_unicode_byte_invalid_sequence">test_unicode_byte_invalid_sequence()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_module_parse_fileobject_type_error">test_module_parse_fileobject_type_error()</a><br />
 <span class="index-where">(in&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_unicode_byte_zero">test_unicode_byte_zero()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_module_parse_gzipobject">test_module_parse_gzipobject()</a><br />
 <span class="index-where">(in&nbsp;<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_unicode.UnicodeTestCase-class.html#test_unicode_comment">test_unicode_comment()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</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&nbsp;<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_xsitype">test_data_element_data_element_arg_xsitype()</a><br />
 <span class="index-where">(in&nbsp;<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">test_module_parse_html()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</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 />
+<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&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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 />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</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 />
+<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&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_filelike">test_module_parse_html_filelike()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</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 />
+<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&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<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_norecover">test_module_parse_html_norecover()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</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 />
+<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&nbsp;<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">test_data_element_int()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_hash_repr">test_data_element_float_hash_repr()</a><br />
 <span class="index-where">(in&nbsp;<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_module_parse_large_fileobject">test_module_parse_large_fileobject()</a><br />
 <span class="index-where">(in&nbsp;<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_unicode.UnicodeTestCase-class.html#test_unicode_qname">test_unicode_qname()</a><br />
+<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&nbsp;<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 />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_precision">test_data_element_float_precision()</a><br />
 <span class="index-where">(in&nbsp;<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_multiple_elementrees">test_multiple_elementrees()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</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&nbsp;<a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_repr1">test_unicode_repr1()</a><br />
+<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&nbsp;<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_xsi">test_data_element_invalid_xsi()</a><br />
+<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&nbsp;<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_multiple_elementrees">test_multiple_elementrees()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_repr2">test_unicode_repr2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_repr1">test_unicode_repr1()</a><br />
 <span class="index-where">(in&nbsp;<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_NoneType">test_data_element_NoneType()</a><br />
+<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&nbsp;<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_namespace_cleanup">test_namespace_cleanup()</a><br />
 <span class="index-where">(in&nbsp;<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_repr3">test_unicode_repr3()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_repr2">test_unicode_repr2()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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_namespace_cleanup_attributes">test_namespace_cleanup_attributes()</a><br />
 <span class="index-where">(in&nbsp;<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_repr4">test_unicode_repr4()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_repr3">test_unicode_repr3()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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_namespace_cleanup_deep">test_namespace_cleanup_deep()</a><br />
 <span class="index-where">(in&nbsp;<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_tag">test_unicode_tag()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_repr4">test_unicode_repr4()</a><br />
 <span class="index-where">(in&nbsp;<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_default">test_data_element_nsmap_default()</a><br />
+<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&nbsp;<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_namespace_cleanup_deep_to_top">test_namespace_cleanup_deep_to_top()</a><br />
 <span class="index-where">(in&nbsp;<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_tag_invalid">test_unicode_tag_invalid()</a><br />
+<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&nbsp;<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_empty">test_data_element_nsmap_empty()</a><br />
+<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&nbsp;<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_namespace_cleanup_keep_prefixes">test_namespace_cleanup_keep_prefixes()</a><br />
 <span class="index-where">(in&nbsp;<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_text">test_unicode_text()</a><br />
+<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&nbsp;<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_pytype_none">test_data_element_pytype_none()</a><br />
+<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&nbsp;<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_namespace_cleanup_keep_prefixes_top">test_namespace_cleanup_keep_prefixes_top()</a><br />
 <span class="index-where">(in&nbsp;<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_xml">test_unicode_xml()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_text">test_unicode_text()</a><br />
 <span class="index-where">(in&nbsp;<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_pytype_none_compat">test_data_element_pytype_none_compat()</a><br />
+<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&nbsp;<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_namespace_cleanup_many">test_namespace_cleanup_many()</a><br />
 <span class="index-where">(in&nbsp;<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_xml_broken">test_unicode_xml_broken()</a><br />
+<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&nbsp;<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_pytypes">test_data_element_pytypes()</a><br />
+<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&nbsp;<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&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_uniname">test_uniname()</a><br />
+<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&nbsp;<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_str">test_data_element_str()</a><br />
+<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&nbsp;<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&nbsp;<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_uniname">test_uniname()</a><br />
+<span class="index-where">(in&nbsp;<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_pytypes">test_data_element_pytypes()</a><br />
+<span class="index-where">(in&nbsp;<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 />
+<span class="index-where">(in&nbsp;<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._XMLPullParserTest-class.html#test_unknown_event">test_unknown_event()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</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 />
+<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&nbsp;<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_nsmap">test_namespace_nsmap()</a><br />
 <span class="index-where">(in&nbsp;<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_builder.BuilderTestCase-class.html#test_unknown_type_raises">test_unknown_type_raises()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_builder.BuilderTestCase-class.html">BuilderTestCase</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 />
+<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&nbsp;<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 />
-<span class="index-where">(in&nbsp;<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">test_namespaces()</a><br />
+<span class="index-where">(in&nbsp;<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.ETreeXSLTExtFuncTestCase-class.html#test_variable_result_tree_fragment">test_variable_result_tree_fragment()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</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 />
+<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&nbsp;<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&nbsp;<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&nbsp;<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&nbsp;<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_ustr">test_data_element_ustr()</a><br />
+<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&nbsp;<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&nbsp;<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_copy_element">test_namespaces_copy_element()</a><br />
+<span class="index-where">(in&nbsp;<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_version">test_version()</a><br />
 <span class="index-where">(in&nbsp;<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_ustr_floatliteral">test_data_element_ustr_floatliteral()</a><br />
+<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&nbsp;<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 />
+<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&nbsp;<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.HtmlFileTestCase-class.html#test_void_elements">test_void_elements()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
 </tr>
 <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 />
+<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&nbsp;<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_default_and_attr">test_namespaces_default_and_attr()</a><br />
 <span class="index-where">(in&nbsp;<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_weird_dict_interaction">test_weird_dict_interaction()</a><br />
 <span class="index-where">(in&nbsp;<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_xsitypes">test_data_element_xsitypes()</a><br />
+<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&nbsp;<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_and_other">test_namespaces_default_and_other()</a><br />
 <span class="index-where">(in&nbsp;<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_wide_unicode_xml">test_wide_unicode_xml()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 </tr>
 <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 />
+<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&nbsp;<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_other">test_namespaces_default_and_other()</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&nbsp;<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_wide_unicode_xml">test_wide_unicode_xml()</a><br />
 <span class="index-where">(in&nbsp;<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_xsitypes_xsdprefixed">test_data_element_xsitypes_xsdprefixed()</a><br />
+<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&nbsp;<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_elementtree">test_namespaces_elementtree()</a><br />
 <span class="index-where">(in&nbsp;<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_write">test_write()</a><br />
 <span class="index-where">(in&nbsp;<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_dataelement_xsi">test_dataelement_xsi()</a><br />
+<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&nbsp;<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_reuse_after_move">test_namespaces_reuse_after_move()</a><br />
 <span class="index-where">(in&nbsp;<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.ETreeWriteTestCase-class.html#test_write">test_write()</a><br />
 <span class="index-where">(in&nbsp;<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_dataelement_xsi_nsmap">test_dataelement_xsi_nsmap()</a><br />
+<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&nbsp;<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 />
-<span class="index-where">(in&nbsp;<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_nested_default_namespace">test_nested_default_namespace()</a><br />
+<span class="index-where">(in&nbsp;<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_io.ETreeIOTestCase-class.html#test_write_compressed_text">test_write_compressed_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io.ETreeIOTestCase-class.html">ETreeIOTestCase</a>)</span></td>
 </tr>
 <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 />
+<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&nbsp;<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 />
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_nested_default_namespace_and_other">test_nested_default_namespace_and_other()</a><br />
 <span class="index-where">(in&nbsp;<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_incremental_xmlfile.HtmlFileTestCase-class.html#test_write_declaration">test_write_declaration()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
 </tr>
 <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 />
+<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&nbsp;<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_and_other">test_nested_default_namespace_and_other()</a><br />
-<span class="index-where">(in&nbsp;<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_http_io.HttpIOTestCase-class.html#test_network_dtd">test_network_dtd()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io.HttpIOTestCase-class.html">HttpIOTestCase</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&nbsp;<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_date_element_efactory_text">test_date_element_efactory_text()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_http_io.HttpIOTestCase-class.html#test_network_dtd">test_network_dtd()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io.HttpIOTestCase-class.html">HttpIOTestCase</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&nbsp;<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_write_Element_repeatedly">test_write_Element_repeatedly()</a><br />
 <span class="index-where">(in&nbsp;<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_deannotate">test_deannotate()</a><br />
+<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&nbsp;<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 />
+<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&nbsp;<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_ElementTreeDoctest">test_write_ElementTreeDoctest()</a><br />
 <span class="index-where">(in&nbsp;<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_dtd.ETreeDtdTestCase-class.html#test_declaration_apos">test_declaration_apos()</a><br />
-<span class="index-where">(in&nbsp;<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_ns_access2">test_ns_access2()</a><br />
+<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&nbsp;<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 />
 <span class="index-where">(in&nbsp;<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_fail">test_write_fail()</a><br />
 <span class="index-where">(in&nbsp;<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_dtd.ETreeDtdTestCase-class.html#test_declaration_escape_quote_pid">test_declaration_escape_quote_pid()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_declaration_apos">test_declaration_apos()</a><br />
 <span class="index-where">(in&nbsp;<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_ns_attr">test_ns_attr()</a><br />
-<span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</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&nbsp;<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_dtd.ETreeDtdTestCase-class.html#test_declaration_quote_withoutpid">test_declaration_quote_withoutpid()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_declaration_escape_quote_pid">test_declaration_escape_quote_pid()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</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&nbsp;<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_decl_tostring">test_ns_decl_tostring()</a><br />
+<span class="index-where">(in&nbsp;<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.ETreeWriteTestCase-class.html#test_write_file_gzip">test_write_file_gzip()</a><br />
 <span class="index-where">(in&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_deepcopy">test_deepcopy()</a><br />
-<span class="index-where">(in&nbsp;<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_ns_decl_tostring">test_ns_decl_tostring()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_declaration_quote_withoutpid">test_declaration_quote_withoutpid()</a><br />
+<span class="index-where">(in&nbsp;<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_ns_decl_tostring_default">test_ns_decl_tostring_default()</a><br />
 <span class="index-where">(in&nbsp;<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.ETreeWriteTestCase-class.html#test_write_file_gzip_parse">test_write_file_gzip_parse()</a><br />
 <span class="index-where">(in&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_append">test_deepcopy_append()</a><br />
+<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&nbsp;<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_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_element">test_ns_decl_tostring_element()</a><br />
 <span class="index-where">(in&nbsp;<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.ETreeWriteTestCase-class.html#test_write_file_gzipfile_parse">test_write_file_gzipfile_parse()</a><br />
 <span class="index-where">(in&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_comment">test_deepcopy_comment()</a><br />
+<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&nbsp;<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_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_root">test_ns_decl_tostring_root()</a><br />
 <span class="index-where">(in&nbsp;<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_write_filename">test_write_filename()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 </tr>
 <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&nbsp;<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_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_deepcopy_comment">test_deepcopy_comment()</a><br />
 <span class="index-where">(in&nbsp;<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._XMLPullParserTest-class.html#test_ns_events">test_ns_events()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</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&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_deepcopy_elementtree_dtd">test_deepcopy_elementtree_dtd()</a><br />
-<span class="index-where">(in&nbsp;<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._XMLPullParserTest-class.html#test_ns_events">test_ns_events()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
+<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&nbsp;<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_ns_move">test_ns_move()</a><br />
+<span class="index-where">(in&nbsp;<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.ETreeWriteTestCase-class.html#test_write_gzip_level">test_write_gzip_level()</a><br />
 <span class="index-where">(in&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_deepcopy_elementtree_pi">test_deepcopy_elementtree_pi()</a><br />
+<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&nbsp;<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_ns_move">test_ns_move()</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&nbsp;<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_write_invalid_filename">test_write_invalid_filename()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 </tr>
 <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&nbsp;<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_ns_setting">test_ns_setting()</a><br />
+<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&nbsp;<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_ns_tag_parse">test_ns_tag_parse()</a><br />
 <span class="index-where">(in&nbsp;<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_method_html">test_write_method_html()</a><br />
 <span class="index-where">(in&nbsp;<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_deepcopy_pi">test_deepcopy_pi()</a><br />
-<span class="index-where">(in&nbsp;<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_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_deepcopy_namespaces">test_deepcopy_namespaces()</a><br />
 <span class="index-where">(in&nbsp;<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-module.html">test_nsclasses</a><br />
+<span class="index-where">(in&nbsp;<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_write_method_text">test_write_method_text()</a><br />
 <span class="index-where">(in&nbsp;<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_deepcopy_pi_dtd">test_deepcopy_pi_dtd()</a><br />
+<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&nbsp;<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_nsmap_prefix_invalid">test_nsmap_prefix_invalid()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html#test_write_namespaced_element">test_write_namespaced_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
 </tr>
 <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&nbsp;<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_nsmap_prefix_invalid">test_nsmap_prefix_invalid()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_pi_dtd">test_deepcopy_pi_dtd()</a><br />
 <span class="index-where">(in&nbsp;<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._XIncludeTestCase-class.html#test_xinclude">test_xinclude()</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&nbsp;<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&nbsp;<a href="lxml.tests.test_etree._XIncludeTestCase-class.html" onclick="show_private();">_XIncludeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_tail">test_deepcopy_tail()</a><br />
+<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&nbsp;<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">test_object_path()</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&nbsp;<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&nbsp;<a href="lxml.tests.test_etree._XIncludeTestCase-class.html" onclick="show_private();">_XIncludeTestCase</a>)</span></td>
 </tr>
 <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&nbsp;<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_addattr">test_object_path_addattr()</a><br />
+<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&nbsp;<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_addattr_create">test_object_path_addattr_create()</a><br />
 <span class="index-where">(in&nbsp;<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_recursive">test_xinclude_resolver_recursive()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree._XIncludeTestCase-class.html" onclick="show_private();">_XIncludeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_default_class_lookup_pull_parser">test_default_class_lookup_pull_parser()</a><br />
+<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&nbsp;<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_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_create_element">test_object_path_addattr_create_element()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_etree._XIncludeTestCase-class.html" onclick="show_private();">_XIncludeTestCase</a>)</span></td>
 </tr>
 <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&nbsp;<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_addattr_create_element">test_object_path_addattr_create_element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_default_class_lookup_pull_parser">test_default_class_lookup_pull_parser()</a><br />
+<span class="index-where">(in&nbsp;<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_addattr_create_list">test_object_path_addattr_create_list()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_htmlparser.HtmlParserTestCase-class.html#test_default_parser_HTML_broken">test_default_parser_HTML_broken()</a><br />
-<span class="index-where">(in&nbsp;<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_addattr_create_list">test_object_path_addattr_create_list()</a><br />
+<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&nbsp;<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_addattr_element">test_object_path_addattr_element()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_default_tagname">test_default_tagname()</a><br />
-<span class="index-where">(in&nbsp;<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_addattr_element">test_object_path_addattr_element()</a><br />
+<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&nbsp;<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_default_absolute">test_object_path_default_absolute()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_del_attribute_ns">test_del_attribute_ns()</a><br />
-<span class="index-where">(in&nbsp;<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_default_absolute">test_object_path_default_absolute()</a><br />
+<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&nbsp;<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_default_relative">test_object_path_default_relative()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_del_attribute_ns_parsed">test_del_attribute_ns_parsed()</a><br />
+<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&nbsp;<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_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_dot">test_object_path_dot()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_del_insert">test_del_insert()</a><br />
+<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&nbsp;<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_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_dot_list">test_object_path_dot_list()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_del_setitem">test_del_setitem()</a><br />
+<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&nbsp;<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_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_root">test_object_path_dot_root()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_del_setslice">test_del_setslice()</a><br />
+<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&nbsp;<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_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_root_list">test_object_path_dot_root_list()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_delitem">test_delitem()</a><br />
+<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&nbsp;<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_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_fail">test_object_path_fail()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_delitem_tail">test_delitem_tail()</a><br />
+<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&nbsp;<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">test_object_path_fail()</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&nbsp;<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&nbsp;<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_delslice">test_delslice()</a><br />
+<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&nbsp;<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">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_parse_empty_list">test_object_path_fail_parse_empty_list()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_delslice_child_tail">test_delslice_child_tail()</a><br />
+<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&nbsp;<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_hasattr">test_object_path_hasattr()</a><br />
 <span class="index-where">(in&nbsp;<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_no_id_dict">test_XMLDTDID_no_id_dict()</a><br />
 <span class="index-where">(in&nbsp;<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_delslice_memory">test_delslice_memory()</a><br />
+<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&nbsp;<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_index">test_object_path_index()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_delslice_negative1">test_delslice_negative1()</a><br />
+<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&nbsp;<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_index_fail_lookup">test_object_path_index_fail_lookup()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_delslice_negative2">test_delslice_negative2()</a><br />
+<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&nbsp;<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_fail_parse">test_object_path_index_fail_parse()</a><br />
 <span class="index-where">(in&nbsp;<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">test_xmlschema()</a><br />
 <span class="index-where">(in&nbsp;<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">test_delslice_step()</a><br />
+<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&nbsp;<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_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_list">test_object_path_index_list()</a><br />
 <span class="index-where">(in&nbsp;<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_comment_error">test_xmlschema_comment_error()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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_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_list">test_object_path_list()</a><br />
 <span class="index-where">(in&nbsp;<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_default_attributes">test_xmlschema_default_attributes()</a><br />
 <span class="index-where">(in&nbsp;<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_negative2">test_delslice_step_negative2()</a><br />
+<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&nbsp;<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_ns">test_object_path_ns()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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 />
+<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&nbsp;<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">test_object_path_ns()</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&nbsp;<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_error_log">test_xmlschema_error_log()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_ns_list">test_object_path_ns_list()</a><br />
+<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&nbsp;<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 />
 <span class="index-where">(in&nbsp;<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_file">test_xmlschema_file()</a><br />
 <span class="index-where">(in&nbsp;<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_child">test_descendant_paths_child()</a><br />
+<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&nbsp;<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_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_set_create">test_object_path_set_create()</a><br />
 <span class="index-where">(in&nbsp;<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_illegal_validation_error">test_xmlschema_illegal_validation_error()</a><br />
 <span class="index-where">(in&nbsp;<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_prefix">test_descendant_paths_prefix()</a><br />
+<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&nbsp;<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_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_create_element">test_object_path_set_create_element()</a><br />
 <span class="index-where">(in&nbsp;<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_import_file">test_xmlschema_import_file()</a><br />
 <span class="index-where">(in&nbsp;<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_doctestcompare.DoctestCompareTest-class.html#test_differing_attributes">test_differing_attributes()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</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_descendant_paths_prefix">test_descendant_paths_prefix()</a><br />
+<span class="index-where">(in&nbsp;<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_set_create_list">test_object_path_set_create_list()</a><br />
 <span class="index-where">(in&nbsp;<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_invalid_schema1">test_xmlschema_invalid_schema1()</a><br />
 <span class="index-where">(in&nbsp;<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_doctestcompare.DoctestCompareTest-class.html#test_differing_tags">test_differing_tags()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_differing_attributes">test_differing_attributes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</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_element">test_object_path_set_element()</a><br />
 <span class="index-where">(in&nbsp;<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_invalid_schema2">test_xmlschema_invalid_schema2()</a><br />
 <span class="index-where">(in&nbsp;<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_dir">test_dir()</a><br />
-<span class="index-where">(in&nbsp;<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_set_element">test_object_path_set_element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_differing_tags">test_differing_tags()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</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&nbsp;<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_iterparse">test_xmlschema_iterparse()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_syntax">test_object_path_syntax()</a><br />
+<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&nbsp;<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_iterparse_fail">test_xmlschema_iterparse_fail()</a><br />
-<span class="index-where">(in&nbsp;<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_name_only">test_docinfo_name_only()</a><br />
-<span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests-module.html">lxml.tests</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&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html">ETreeXMLSchemaResolversTestCase</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&nbsp;<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_public">test_docinfo_public()</a><br />
+<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&nbsp;<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.HtmlFileTestCase-class.html#test_open_namespaced_element">test_open_namespaced_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</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&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</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&nbsp;<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_etree.ETreeOnlyTestCase-class.html#test_docinfo_system">test_docinfo_system()</a><br />
+<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&nbsp;<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_base_url_docinfo">test_parse_base_url_docinfo()</a><br />
 <span class="index-where">(in&nbsp;<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_parse_default_attributes">test_xmlschema_parse_default_attributes()</a><br />
+<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&nbsp;<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_doctestcompare-module.html">test_doctestcompare</a><br />
-<span class="index-where">(in&nbsp;<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_docinfo_public">test_docinfo_public()</a><br />
+<span class="index-where">(in&nbsp;<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_base_url_docinfo">test_parse_base_url_docinfo()</a><br />
 <span class="index-where">(in&nbsp;<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_parse_default_attributes_schema_config">test_xmlschema_parse_default_attributes_schema_config()</a><br />
+<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&nbsp;<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_doctype_name_only_roundtrip">test_doctype_name_only_roundtrip()</a><br />
+<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&nbsp;<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_cdata">test_parse_cdata()</a><br />
 <span class="index-where">(in&nbsp;<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_fixed_attributes">test_xmlschema_parse_fixed_attributes()</a><br />
+<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&nbsp;<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_doctype_output_override">test_doctype_output_override()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare-module.html">test_doctestcompare</a><br />
+<span class="index-where">(in&nbsp;<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_encoding_8bit_explicit">test_parse_encoding_8bit_explicit()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html">ETreeXMLSchemaResolversTestCase</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&nbsp;<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_dtd-module.html">test_dtd</a><br />
-<span class="index-where">(in&nbsp;<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_doctype_name_only_roundtrip">test_doctype_name_only_roundtrip()</a><br />
+<span class="index-where">(in&nbsp;<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_parse_encoding_8bit_explicit">test_parse_encoding_8bit_explicit()</a><br />
 <span class="index-where">(in&nbsp;<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.ETreeXMLSchemaResolversTestCase-class.html#test_xmlschema_resolvers_noroot">test_xmlschema_resolvers_noroot()</a><br />
+<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&nbsp;<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_dtd.ETreeDtdTestCase-class.html#test_dtd">test_dtd()</a><br />
-<span class="index-where">(in&nbsp;<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_doctype_output_override">test_doctype_output_override()</a><br />
+<span class="index-where">(in&nbsp;<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_encoding_8bit_override">test_parse_encoding_8bit_override()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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_dtd.ETreeDtdTestCase-class.html#test_dtd_api_internal">test_dtd_api_internal()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd-module.html">test_dtd</a><br />
+<span class="index-where">(in&nbsp;<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_parse_encoding_8bit_override">test_parse_encoding_8bit_override()</a><br />
 <span class="index-where">(in&nbsp;<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_shortcut">test_xmlschema_shortcut()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</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&nbsp;<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_dtd.ETreeDtdTestCase-class.html#test_dtd_assertValid">test_dtd_assertValid()</a><br />
+<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&nbsp;<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_error">test_parse_error()</a><br />
 <span class="index-where">(in&nbsp;<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_stringio">test_xmlschema_stringio()</a><br />
+<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&nbsp;<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_dtd.ETreeDtdTestCase-class.html#test_dtd_attrs">test_dtd_attrs()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_api_internal">test_dtd_api_internal()</a><br />
 <span class="index-where">(in&nbsp;<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_error_from_file">test_parse_error_from_file()</a><br />
 <span class="index-where">(in&nbsp;<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_boolean">test_xpath_boolean()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</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&nbsp;<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_dtd.ETreeDtdTestCase-class.html#test_dtd_broken">test_dtd_broken()</a><br />
+<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&nbsp;<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.ETreeErrorLogTest-class.html#test_parse_error_logging">test_parse_error_logging()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeErrorLogTest-class.html">ETreeErrorLogTest</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 />
+<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&nbsp;<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_file">test_dtd_file()</a><br />
+<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&nbsp;<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_error_none">test_parse_error_none()</a><br />
 <span class="index-where">(in&nbsp;<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_class_prefix_error">test_xpath_class_prefix_error()</a><br />
+<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&nbsp;<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">test_dtd_internal()</a><br />
+<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&nbsp;<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&nbsp;<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&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html">ETreeXPathClassTestCase</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&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</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&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</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 />
+<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&nbsp;<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_invalid">test_dtd_invalid()</a><br />
+<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&nbsp;<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_encoding">test_parse_file_encoding()</a><br />
 <span class="index-where">(in&nbsp;<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_error">test_xpath_compile_error()</a><br />
+<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&nbsp;<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_invalid_duplicate_id">test_dtd_invalid_duplicate_id()</a><br />
+<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&nbsp;<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_nonexistent">test_parse_file_nonexistent()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html">ETreeETXPathClassTestCase</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&nbsp;<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_dtd_io">test_dtd_io()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<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&nbsp;<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_object">test_parse_file_object()</a><br />
 <span class="index-where">(in&nbsp;<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_vars">test_xpath_compile_vars()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html">ETreeXPathClassTestCase</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&nbsp;<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_parse_file_not_found">test_dtd_parse_file_not_found()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_invalid_duplicate_id">test_dtd_invalid_duplicate_id()</a><br />
 <span class="index-where">(in&nbsp;<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_object_encoding">test_parse_file_object_encoding()</a><br />
 <span class="index-where">(in&nbsp;<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_vars">test_xpath_compile_vars()</a><br />
+<span class="index-where">(in&nbsp;<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_dtd_io">test_dtd_io()</a><br />
+<span class="index-where">(in&nbsp;<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_fileobject_unicode">test_parse_fileobject_unicode()</a><br />
+<span class="index-where">(in&nbsp;<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_context_node">test_xpath_context_node()</a><br />
 <span class="index-where">(in&nbsp;<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_parse_invalid">test_dtd_parse_invalid()</a><br />
+<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&nbsp;<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_parse_fileobject_unicode">test_parse_fileobject_unicode()</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&nbsp;<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&nbsp;<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_parse_valid">test_dtd_parse_valid()</a><br />
+<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&nbsp;<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_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_remove_comments">test_parse_remove_comments()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_parse_valid_file_url">test_dtd_parse_valid_file_url()</a><br />
-<span class="index-where">(in&nbsp;<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_parse_remove_comments">test_parse_remove_comments()</a><br />
-<span class="index-where">(in&nbsp;<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_error">test_xpath_error()</a><br />
-<span class="index-where">(in&nbsp;<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_parse_valid_relative">test_dtd_parse_valid_relative()</a><br />
+<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&nbsp;<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_parse_remove_pis">test_parse_remove_pis()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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_parse_valid_relative_file_url">test_dtd_parse_valid_relative_file_url()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid_file_url">test_dtd_parse_valid_file_url()</a><br />
 <span class="index-where">(in&nbsp;<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_stringio">test_parse_stringio()</a><br />
 <span class="index-where">(in&nbsp;<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_eval_context_propagation">test_xpath_eval_context_propagation()</a><br />
+<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&nbsp;<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_stringio">test_dtd_stringio()</a><br />
+<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&nbsp;<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_parse_stringio_base_url">test_parse_stringio_base_url()</a><br />
 <span class="index-where">(in&nbsp;<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_evaluator">test_xpath_evaluator()</a><br />
+<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&nbsp;<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_dump_none">test_dump_none()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid_relative_file_url">test_dtd_parse_valid_relative_file_url()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</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&nbsp;<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_evaluator_element">test_xpath_evaluator_element()</a><br />
+<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&nbsp;<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<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&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_parse_utf8_bom">test_parse_utf8_bom()</a><br />
 <span class="index-where">(in&nbsp;<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_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_evaluator_tree">test_xpath_evaluator_tree()</a><br />
+<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&nbsp;<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_bool">test_efactory_bool()</a><br />
-<span class="index-where">(in&nbsp;<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_dump_none">test_dump_none()</a><br />
+<span class="index-where">(in&nbsp;<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&nbsp;<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 />
+<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&nbsp;<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_float">test_efactory_float()</a><br />
+<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&nbsp;<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_parseid">test_parseid()</a><br />
 <span class="index-where">(in&nbsp;<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.ETreeXPathExsltTestCase-class.html#test_xpath_exslt_functions_date">test_xpath_exslt_functions_date()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html">ETreeXPathExsltTestCase</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&nbsp;<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 />
+<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&nbsp;<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_parser_based_lookup">test_parser_based_lookup()</a><br />
 <span class="index-where">(in&nbsp;<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.ETreeXPathExsltTestCase-class.html#test_xpath_exslt_functions_strings">test_xpath_exslt_functions_strings()</a><br />
+<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&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html">ETreeXPathExsltTestCase</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 />
+<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&nbsp;<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_encoding">test_parser_encoding()</a><br />
 <span class="index-where">(in&nbsp;<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">test_xpath_extensions()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</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&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html">ETreeXPathExsltTestCase</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 />
+<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&nbsp;<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_encoding_unknown">test_parser_encoding_unknown()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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_str">test_efactory_str()</a><br />
+<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_http_io.HttpIOTestCase-class.html#test_parser_input_mix">test_parser_input_mix()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io.HttpIOTestCase-class.html">HttpIOTestCase</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 />
+<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&nbsp;<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_subtype">test_efactory_subtype()</a><br />
+<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&nbsp;<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_attrib">test_parser_target_attrib()</a><br />
 <span class="index-where">(in&nbsp;<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">test_xpath_extensions_nodes()</a><br />
+<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&nbsp;<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 />
+<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&nbsp;<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_cdata">test_parser_target_cdata()</a><br />
 <span class="index-where">(in&nbsp;<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_append">test_xpath_extensions_nodes_append()</a><br />
+<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&nbsp;<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 />
+<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&nbsp;<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_comment">test_parser_target_comment()</a><br />
 <span class="index-where">(in&nbsp;<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_append">test_xpath_extensions_nodes_append()</a><br />
+<span class="index-where">(in&nbsp;<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&nbsp;<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_data">test_parser_target_data()</a><br />
+<span class="index-where">(in&nbsp;<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_append2">test_xpath_extensions_nodes_append2()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_entity">test_parser_target_entity()</a><br />
+<span class="index-where">(in&nbsp;<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&nbsp;<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&nbsp;<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_parser_target_data">test_parser_target_data()</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&nbsp;<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 />
+<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&nbsp;<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&nbsp;<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_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_error_in_close">test_parser_target_error_in_close()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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_classlookup.ProxyTestCase-class.html#test_element_base">test_element_base()</a><br />
 <span class="index-where">(in&nbsp;<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_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_error_in_end">test_parser_target_error_in_end()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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_classlookup.ProxyTestCase-class.html#test_element_base_children">test_element_base_children()</a><br />
 <span class="index-where">(in&nbsp;<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_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_error_in_start">test_parser_target_error_in_start()</a><br />
 <span class="index-where">(in&nbsp;<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_no_smart_strings">test_xpath_list_attribute_parent_no_smart_strings()</a><br />
+<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&nbsp;<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_contains">test_element_contains()</a><br />
 <span class="index-where">(in&nbsp;<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_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_start_and_close">test_parser_target_error_in_start_and_close()</a><br />
 <span class="index-where">(in&nbsp;<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_comment">test_xpath_list_comment()</a><br />
+<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&nbsp;<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_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_element_creation">test_element_creation()</a><br />
 <span class="index-where">(in&nbsp;<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_parser_target_error_in_start">test_parser_target_error_in_start()</a><br />
-<span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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&nbsp;<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&nbsp;<a href="lxml.tests.test_errors.ErrorTestCase-class.html">ErrorTestCase</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&nbsp;<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_nothing">test_xpath_list_nothing()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_feed_no_id_dict">test_parser_target_feed_no_id_dict()</a><br />
+<span class="index-where">(in&nbsp;<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&nbsp;<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_indexing_negative">test_element_indexing_negative()</a><br />
 <span class="index-where">(in&nbsp;<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_feed_exception">test_parser_target_feed_exception()</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&nbsp;<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 />
+<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&nbsp;<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_indexing_only_text">test_element_indexing_only_text()</a><br />
 <span class="index-where">(in&nbsp;<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_feed_no_id_dict">test_parser_target_feed_no_id_dict()</a><br />
+<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&nbsp;<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 />
+<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&nbsp;<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_indexing_with_text">test_element_indexing_with_text()</a><br />
 <span class="index-where">(in&nbsp;<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_fromstring_exception">test_parser_target_fromstring_exception()</a><br />
-<span class="index-where">(in&nbsp;<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_no_smart_strings">test_xpath_list_text_parent_no_smart_strings()</a><br />
+<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&nbsp;<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_unicode_text_parent">test_xpath_list_unicode_text_parent()</a><br />
 <span class="index-where">(in&nbsp;<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_indexing_with_text2">test_element_indexing_with_text2()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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_unicode_text_parent">test_xpath_list_unicode_text_parent()</a><br />
+<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&nbsp;<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_colon">test_element_name_colon()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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_namespace">test_xpath_namespace()</a><br />
-<span class="index-where">(in&nbsp;<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_empty">test_element_name_empty()</a><br />
-<span class="index-where">(in&nbsp;<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_recover">test_parser_target_recover()</a><br />
-<span class="index-where">(in&nbsp;<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_namespace_empty">test_xpath_namespace_empty()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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_tag">test_parser_target_tag()</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&nbsp;<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_ns">test_xpath_ns()</a><br />
 <span class="index-where">(in&nbsp;<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_space">test_element_name_space()</a><br />
+<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&nbsp;<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_version">test_parser_version()</a><br />
+<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&nbsp;<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_ns_empty">test_xpath_ns_empty()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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_pi">test_pi()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_ns_none">test_xpath_ns_none()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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 />
+<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&nbsp;<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_pi">test_pi()</a><br />
+<span class="index-where">(in&nbsp;<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_number">test_xpath_number()</a><br />
 <span class="index-where">(in&nbsp;<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_with_text">test_element_nested_with_text()</a><br />
-<span class="index-where">(in&nbsp;<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_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_pi">test_pi()</a><br />
+<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&nbsp;<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_pi_base">test_pi_base()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_xpath_on_context_node">test_xpath_on_context_node()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</a>)</span></td>
 </tr>
 <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&nbsp;<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_pi_base">test_pi_base()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
+<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&nbsp;<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_pi_nonsense">test_pi_nonsense()</a><br />
+<span class="index-where">(in&nbsp;<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_xpath_on_foreign_context_node">test_xpath_on_foreign_context_node()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</a>)</span></td>
 </tr>
 <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&nbsp;<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&nbsp;<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_element_nsmap">test_element_nsmap()</a><br />
+<span class="index-where">(in&nbsp;<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_pi_parse">test_pi_parse()</a><br />
+<span class="index-where">(in&nbsp;<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&nbsp;<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_element_nsmap_custom_prefixes">test_element_nsmap_custom_prefixes()</a><br />
+<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&nbsp;<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_parse">test_pi_parse()</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&nbsp;<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_string">test_xpath_string()</a><br />
 <span class="index-where">(in&nbsp;<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_element_nsmap_default">test_element_nsmap_default()</a><br />
+<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&nbsp;<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_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_pseudo_attributes_get">test_pi_pseudo_attributes_get()</a><br />
 <span class="index-where">(in&nbsp;<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_text_from_other_document">test_xpath_text_from_other_document()</a><br />
 <span class="index-where">(in&nbsp;<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_element_nsmap_empty">test_element_nsmap_empty()</a><br />
+<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&nbsp;<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_pickle">test_pickle()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_variables">test_xpath_variables()</a><br />
 <span class="index-where">(in&nbsp;<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_refcycle">test_element_refcycle()</a><br />
-<span class="index-where">(in&nbsp;<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">test_pickle()</a><br />
+<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&nbsp;<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_pickle_boolelement">test_pickle_boolelement()</a><br />
 <span class="index-where">(in&nbsp;<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_variables_nodeset">test_xpath_variables_nodeset()</a><br />
 <span class="index-where">(in&nbsp;<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_sax.ETreeSaxTestCase-class.html#test_element_sax">test_element_sax()</a><br />
-<span class="index-where">(in&nbsp;<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_pickle_boolelement">test_pickle_boolelement()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_refcycle">test_element_refcycle()</a><br />
+<span class="index-where">(in&nbsp;<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_elementtree">test_pickle_elementtree()</a><br />
 <span class="index-where">(in&nbsp;<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-module.html">test_xpathevaluator</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</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 />
+<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&nbsp;<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_pickle_elementtree">test_pickle_elementtree()</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&nbsp;<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&nbsp;<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_element_with_attributes">test_element_with_attributes()</a><br />
-<span class="index-where">(in&nbsp;<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_sax.ETreeSaxTestCase-class.html#test_element_sax_ns">test_element_sax_ns()</a><br />
+<span class="index-where">(in&nbsp;<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_pickle_intelement">test_pickle_intelement()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_element_with_attributes_extra">test_element_with_attributes_extra()</a><br />
+<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&nbsp;<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_noneelement">test_pickle_noneelement()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_element_with_attributes_extra_duplicate">test_element_with_attributes_extra_duplicate()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_extra">test_element_with_attributes_extra()</a><br />
 <span class="index-where">(in&nbsp;<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_strelement">test_pickle_strelement()</a><br />
 <span class="index-where">(in&nbsp;<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_xsitype_deannotate">test_xsitype_deannotate()</a><br />
 <span class="index-where">(in&nbsp;<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_element_with_attributes_keywords">test_element_with_attributes_keywords()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_extra_duplicate">test_element_with_attributes_extra_duplicate()</a><br />
 <span class="index-where">(in&nbsp;<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_strelement">test_pickle_strelement()</a><br />
-<span class="index-where">(in&nbsp;<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_prefix">test_prefix()</a><br />
+<span class="index-where">(in&nbsp;<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&nbsp;<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_ns">test_element_with_attributes_ns()</a><br />
+<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&nbsp;<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">test_prefix()</a><br />
+<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&nbsp;<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">test_xslt()</a><br />
 <span class="index-where">(in&nbsp;<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_element_write_text">test_element_write_text()</a><br />
-<span class="index-where">(in&nbsp;<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_prefix_default_ns">test_prefix_default_ns()</a><br />
-<span class="index-where">(in&nbsp;<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_element_with_attributes_ns">test_element_with_attributes_ns()</a><br />
+<span class="index-where">(in&nbsp;<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_processinginstruction">test_processinginstruction()</a><br />
+<span class="index-where">(in&nbsp;<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_access_control_repr">test_xslt_access_control_repr()</a><br />
 <span class="index-where">(in&nbsp;<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_elementpath-module.html">test_elementpath</a><br />
-<span class="index-where">(in&nbsp;<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_processinginstruction">test_processinginstruction()</a><br />
-<span class="index-where">(in&nbsp;<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_element_write_text">test_element_write_text()</a><br />
+<span class="index-where">(in&nbsp;<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_proxy_collect_siblings">test_proxy_collect_siblings()</a><br />
+<span class="index-where">(in&nbsp;<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_broken">test_xslt_broken()</a><br />
 <span class="index-where">(in&nbsp;<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-module.html">test_elementtree</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementpath-module.html">test_elementpath</a><br />
 <span class="index-where">(in&nbsp;<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_proxy_collect_siblings">test_proxy_collect_siblings()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_proxy_collect_siblings_text">test_proxy_collect_siblings_text()</a><br />
 <span class="index-where">(in&nbsp;<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_copy">test_xslt_copy()</a><br />
 <span class="index-where">(in&nbsp;<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&nbsp;<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_proxy_collect_siblings_text">test_proxy_collect_siblings_text()</a><br />
-<span class="index-where">(in&nbsp;<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-module.html">test_elementtree</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</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&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</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&nbsp;<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 />
+<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&nbsp;<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.ProxyTestCase-class.html#test_proxy_hashing">test_proxy_hashing()</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&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</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&nbsp;<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_elementtree_find_qname">test_elementtree_find_qname()</a><br />
-<span class="index-where">(in&nbsp;<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">test_proxy_reuse()</a><br />
+<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&nbsp;<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.ProxyTestCase-class.html#test_proxy_reuse_after_del_root">test_proxy_reuse_after_del_root()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</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&nbsp;<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_elementtree_findall_ns_qname">test_elementtree_findall_ns_qname()</a><br />
+<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&nbsp;<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_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_after_gc">test_proxy_reuse_after_gc()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</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&nbsp;<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_elementtree_findall_qname">test_elementtree_findall_qname()</a><br />
+<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&nbsp;<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 />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.XMLPullParserTest-class.html#test_pull_from_simple_target">test_pull_from_simple_target()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.XMLPullParserTest-class.html">XMLPullParserTest</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&nbsp;<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_elementtree_getelementpath">test_elementtree_getelementpath()</a><br />
+<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&nbsp;<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.XMLPullParserTest-class.html#test_pull_from_simple_target">test_pull_from_simple_target()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.XMLPullParserTest-class.html#test_pull_from_simple_target_start_end">test_pull_from_simple_target_start_end()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.XMLPullParserTest-class.html">XMLPullParserTest</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&nbsp;<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_elementtree_getelementpath_ns">test_elementtree_getelementpath_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_getelementpath">test_elementtree_getelementpath()</a><br />
 <span class="index-where">(in&nbsp;<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.XMLPullParserTest-class.html#test_pull_from_simple_target_start_end">test_pull_from_simple_target_start_end()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.XMLPullParserTest-class.html#test_pull_from_tree_builder">test_pull_from_tree_builder()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.XMLPullParserTest-class.html">XMLPullParserTest</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&nbsp;<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_getiterator">test_elementtree_getiterator()</a><br />
-<span class="index-where">(in&nbsp;<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.XMLPullParserTest-class.html#test_pull_from_tree_builder">test_pull_from_tree_builder()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_getelementpath_ns">test_elementtree_getelementpath_ns()</a><br />
+<span class="index-where">(in&nbsp;<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.XMLPullParserTest-class.html#test_pull_from_tree_builder_subclass">test_pull_from_tree_builder_subclass()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.XMLPullParserTest-class.html">XMLPullParserTest</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&nbsp;<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_getiterator_filter">test_elementtree_getiterator_filter()</a><br />
+<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&nbsp;<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.XMLPullParserTest-class.html#test_pull_from_tree_builder_subclass">test_pull_from_tree_builder_subclass()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.XMLPullParserTest-class.html">XMLPullParserTest</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&nbsp;<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&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</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&nbsp;<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_elementtree_error">test_xslt_elementtree_error()</a><br />
+<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&nbsp;<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_partial">test_elementtree_getpath_partial()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
+<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&nbsp;<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_pyannotate_ignore_old">test_pyannotate_ignore_old()</a><br />
 <span class="index-where">(in&nbsp;<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_empty">test_xslt_empty()</a><br />
+<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&nbsp;<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_parser_target">test_elementtree_parser_target()</a><br />
-<span class="index-where">(in&nbsp;<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_elementtree_getpath">test_elementtree_getpath()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</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&nbsp;<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_encoding">test_xslt_encoding()</a><br />
+<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&nbsp;<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_elementtree_parser_target_type_error">test_elementtree_parser_target_type_error()</a><br />
-<span class="index-where">(in&nbsp;<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_elementtree_getpath_partial">test_elementtree_getpath_partial()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</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&nbsp;<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_encoding_override">test_xslt_encoding_override()</a><br />
+<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&nbsp;<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_dtd.ETreeDtdTestCase-class.html#test_empty_decl">test_empty_decl()</a><br />
-<span class="index-where">(in&nbsp;<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_elementtree_parser_target">test_elementtree_parser_target()</a><br />
+<span class="index-where">(in&nbsp;<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_pypy_proxy_collect">test_pypy_proxy_collect()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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_errors.ErrorTestCase-class.html#test_empty_parse">test_empty_parse()</a><br />
-<span class="index-where">(in&nbsp;<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_elementtree_parser_target_type_error">test_elementtree_parser_target_type_error()</a><br />
+<span class="index-where">(in&nbsp;<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_pytype_annotation">test_pytype_annotation()</a><br />
 <span class="index-where">(in&nbsp;<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_include">test_xslt_include()</a><br />
+<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&nbsp;<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">test_encoding()</a><br />
-<span class="index-where">(in&nbsp;<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_empty_decl">test_empty_decl()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</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 />
 <span class="index-where">(in&nbsp;<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_include_from_filelike">test_xslt_include_from_filelike()</a><br />
+<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&nbsp;<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&nbsp;<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_errors.ErrorTestCase-class.html#test_empty_parse">test_empty_parse()</a><br />
+<span class="index-where">(in&nbsp;<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_pytype_annotation_use_old">test_pytype_annotation_use_old()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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 />
+<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&nbsp;<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 />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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_parse_stringio">test_encoding_8bit_parse_stringio()</a><br />
-<span class="index-where">(in&nbsp;<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_encoding">test_encoding()</a><br />
+<span class="index-where">(in&nbsp;<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 />
 <span class="index-where">(in&nbsp;<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_partial_doc">test_xslt_input_partial_doc()</a><br />
+<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&nbsp;<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 />
+<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&nbsp;<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">test_qname()</a><br />
 <span class="index-where">(in&nbsp;<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_invalid_stylesheet">test_xslt_invalid_stylesheet()</a><br />
+<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&nbsp;<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 />
+<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&nbsp;<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 />
 <span class="index-where">(in&nbsp;<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_message">test_xslt_message()</a><br />
+<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&nbsp;<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_sub_tostring_default_encoding">test_encoding_sub_tostring_default_encoding()</a><br />
+<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&nbsp;<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 />
 <span class="index-where">(in&nbsp;<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_message_terminate">test_xslt_message_terminate()</a><br />
+<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&nbsp;<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 />
+<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&nbsp;<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_attribute_getset">test_qname_attribute_getset()</a><br />
 <span class="index-where">(in&nbsp;<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_move_result">test_xslt_move_result()</a><br />
+<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&nbsp;<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 />
+<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&nbsp;<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_attribute_resolve">test_qname_attribute_resolve()</a><br />
 <span class="index-where">(in&nbsp;<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_multiple_parameters">test_xslt_multiple_parameters()</a><br />
+<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&nbsp;<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_sub">test_encoding_tostring_sub()</a><br />
+<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&nbsp;<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_attribute_resolve_new">test_qname_attribute_resolve_new()</a><br />
 <span class="index-where">(in&nbsp;<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_multiple_transforms">test_xslt_multiple_transforms()</a><br />
+<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&nbsp;<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_sub_tail">test_encoding_tostring_sub_tail()</a><br />
+<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&nbsp;<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 />
 <span class="index-where">(in&nbsp;<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_parameter_invalid">test_xslt_parameter_invalid()</a><br />
+<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&nbsp;<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_unknown">test_encoding_tostring_unknown()</a><br />
+<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&nbsp;<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&nbsp;<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_parameter_missing">test_xslt_parameter_missing()</a><br />
+<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&nbsp;<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_encoding_tostring_utf16">test_encoding_tostring_utf16()</a><br />
-<span class="index-where">(in&nbsp;<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_encoding_tostring_sub_tail">test_encoding_tostring_sub_tail()</a><br />
+<span class="index-where">(in&nbsp;<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_element">test_qname_element()</a><br />
 <span class="index-where">(in&nbsp;<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_parameter_xpath">test_xslt_parameter_xpath()</a><br />
+<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&nbsp;<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_utf8_bom">test_encoding_utf8_bom()</a><br />
+<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&nbsp;<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_empty">test_qname_empty()</a><br />
 <span class="index-where">(in&nbsp;<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_parameter_xpath_object">test_xslt_parameter_xpath_object()</a><br />
+<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&nbsp;<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_write_default_encoding">test_encoding_write_default_encoding()</a><br />
-<span class="index-where">(in&nbsp;<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_encoding_tostring_utf16">test_encoding_tostring_utf16()</a><br />
+<span class="index-where">(in&nbsp;<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_namespace_localname">test_qname_namespace_localname()</a><br />
 <span class="index-where">(in&nbsp;<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_parameters">test_xslt_parameters()</a><br />
+<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&nbsp;<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_append">test_entity_append()</a><br />
-<span class="index-where">(in&nbsp;<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_encoding_utf8_bom">test_encoding_utf8_bom()</a><br />
+<span class="index-where">(in&nbsp;<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_space">test_qname_space()</a><br />
 <span class="index-where">(in&nbsp;<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">test_xslt_pi()</a><br />
+<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&nbsp;<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_error">test_entity_error()</a><br />
-<span class="index-where">(in&nbsp;<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_encoding_write_default_encoding">test_encoding_write_default_encoding()</a><br />
+<span class="index-where">(in&nbsp;<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&nbsp;<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_embedded_id">test_xslt_pi_embedded_id()</a><br />
+<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&nbsp;<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_parse">test_entity_parse()</a><br />
+<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&nbsp;<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_register_namespace">test_register_namespace()</a><br />
 <span class="index-where">(in&nbsp;<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 />
+<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&nbsp;<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 />
+<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&nbsp;<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_registered_type_stringify">test_registered_type_stringify()</a><br />
 <span class="index-where">(in&nbsp;<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_pi_get">test_xslt_pi_get()</a><br />
+<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&nbsp;<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_values">test_entity_values()</a><br />
+<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&nbsp;<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_registered_types">test_registered_types()</a><br />
 <span class="index-where">(in&nbsp;<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_pi_get_all">test_xslt_pi_get_all()</a><br />
+<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&nbsp;<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_doctestcompare.DoctestCompareTest-class.html#test_equal_input">test_equal_input()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
+<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&nbsp;<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.ETreeNamespaceClassesTestCase-class.html#test_registry">test_registry()</a><br />
 <span class="index-where">(in&nbsp;<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_pi_get_all_reversed">test_xslt_pi_get_all_reversed()</a><br />
+<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&nbsp;<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_errors-module.html">test_errors</a><br />
-<span class="index-where">(in&nbsp;<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_entity_values">test_entity_values()</a><br />
+<span class="index-where">(in&nbsp;<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_rel_xpath_boolean">test_rel_xpath_boolean()</a><br />
 <span class="index-where">(in&nbsp;<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_pi_get_unknown">test_xslt_pi_get_unknown()</a><br />
+<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&nbsp;<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_escaping">test_escaping()</a><br />
-<span class="index-where">(in&nbsp;<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_doctestcompare.DoctestCompareTest-class.html#test_equal_input">test_equal_input()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</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&nbsp;<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_pi_set_new">test_xslt_pi_set_new()</a><br />
+<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&nbsp;<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 />
+<td width="33%" class="link-index"><a href="lxml.tests.test_errors-module.html">test_errors</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</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&nbsp;<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_pi_set_replace">test_xslt_pi_set_replace()</a><br />
+<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&nbsp;<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_io._IOTestCaseBase-class.html#test_etree_parse_io_error">test_etree_parse_io_error()</a><br />
-<span class="index-where">(in&nbsp;<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_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_escaping">test_escaping()</a><br />
+<span class="index-where">(in&nbsp;<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_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng">test_relaxng()</a><br />
 <span class="index-where">(in&nbsp;<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_repeat_transform">test_xslt_repeat_transform()</a><br />
+<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&nbsp;<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_attributes">test_etree_sax_attributes()</a><br />
-<span class="index-where">(in&nbsp;<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-module.html">test_etree</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.RelaxNGCompactTestCase-class.html#test_relaxng_compact">test_relaxng_compact()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.RelaxNGCompactTestCase-class.html">RelaxNGCompactTestCase</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 />
+<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&nbsp;<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&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_etree_parse_io_error">test_etree_parse_io_error()</a><br />
+<span class="index-where">(in&nbsp;<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_relaxng.RelaxNGCompactTestCase-class.html#test_relaxng_compact_file_obj">test_relaxng_compact_file_obj()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.RelaxNGCompactTestCase-class.html">RelaxNGCompactTestCase</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&nbsp;<a href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html">Py3XSLTTestCase</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&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.RelaxNGCompactTestCase-class.html#test_relaxng_compact_str">test_relaxng_compact_str()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.RelaxNGCompactTestCase-class.html">RelaxNGCompactTestCase</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 />
+<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&nbsp;<a href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html">Py3XSLTTestCase</a>)</span></td>
 </tr>
 <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 />
+<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&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</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 />
 <span class="index-where">(in&nbsp;<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.Py3XSLTTestCase-class.html#test_xslt_result_memoryview">test_xslt_result_memoryview()</a><br />
+<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&nbsp;<a href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html">Py3XSLTTestCase</a>)</span></td>
 </tr>
 <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 />
+<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&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</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 />
 <span class="index-where">(in&nbsp;<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_shortcut">test_xslt_shortcut()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</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&nbsp;<a href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html">Py3XSLTTestCase</a>)</span></td>
 </tr>
 <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 />
+<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&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</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 />
 <span class="index-where">(in&nbsp;<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_string_parameters">test_xslt_string_parameters()</a><br />
+<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&nbsp;<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_handler_default_ns">test_etree_sax_handler_default_ns()</a><br />
+<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&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</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 />
 <span class="index-where">(in&nbsp;<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_unicode">test_xslt_unicode()</a><br />
+<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&nbsp;<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_handler_default_ns_None">test_etree_sax_handler_default_ns_None()</a><br />
+<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&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</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 />
 <span class="index-where">(in&nbsp;<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_unicode_standalone">test_xslt_unicode_standalone()</a><br />
+<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&nbsp;<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">test_etree_sax_no_ns()</a><br />
+<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&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</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 />
 <span class="index-where">(in&nbsp;<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_utf8">test_xslt_utf8()</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&nbsp;<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 />
+<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&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</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 />
 <span class="index-where">(in&nbsp;<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_utf8">test_xslt_utf8()</a><br />
+<span class="index-where">(in&nbsp;<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">test_etree_sax_no_ns()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</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 />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests-module.html">tests</a><br />
 <span class="index-where">(in&nbsp;<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_ns1">test_etree_sax_ns1()</a><br />
+<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&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</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_stringio">test_relaxng_stringio()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.QName-class.html#text">text</a><br />
 <span class="index-where">(in&nbsp;<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_ns2">test_etree_sax_ns2()</a><br />
+<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&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</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&nbsp;<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_remove">test_remove()</a><br />
+<span class="index-where">(in&nbsp;<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._Element-class.html#text">text</a><br />
 <span class="index-where">(in&nbsp;<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_ns_attributes">test_etree_sax_ns_attributes()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_ns2">test_etree_sax_ns2()</a><br />
 <span class="index-where">(in&nbsp;<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_remove">test_remove()</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&nbsp;<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._Entity-class.html#text">text</a><br />
 <span class="index-where">(in&nbsp;<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_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&nbsp;<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_remove_nonexisting">test_remove_nonexisting()</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&nbsp;<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.objectify.ObjectifiedElement-class.html#text">text</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.ObjectifiedElement-class.html">ObjectifiedElement</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&nbsp;<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_remove_ns">test_remove_ns()</a><br />
+<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="xml.etree.ElementTree.Element-class.html#text">text</a><br />
 <span class="index-where">(in&nbsp;<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_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&nbsp;<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_remove_tail">test_remove_tail()</a><br />
-<span class="index-where">(in&nbsp;<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">test_replace()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.doctestcompare.LXMLOutputChecker-class.html#text_compare">text_compare()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.doctestcompare.LXMLOutputChecker-class.html">LXMLOutputChecker</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&nbsp;<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_replace">test_replace()</a><br />
+<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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.HtmlMixin-class.html#text_content">text_content()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.HtmlMixin-class.html">HtmlMixin</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_events">test_events()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</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&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</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&nbsp;<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&nbsp;<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.builder-module.html#TEXTAREA">TEXTAREA</a><br />
 <span class="index-where">(in&nbsp;<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._XMLPullParserTest-class.html#test_events_sequence">test_events_sequence()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_events">test_events()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</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&nbsp;<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_resolve_bytes_dtd">test_resolve_bytes_dtd()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</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_classlookup.ClassLookupTestCase-class.html#test_evil_class_lookup">test_evil_class_lookup()</a><br />
-<span class="index-where">(in&nbsp;<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_resolve_bytes_dtd">test_resolve_bytes_dtd()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_events_sequence">test_events_sequence()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</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 />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TFOOT">TFOOT</a><br />
 <span class="index-where">(in&nbsp;<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_math">test_exslt_math()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</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_classlookup.ClassLookupTestCase-class.html#test_evil_class_lookup">test_evil_class_lookup()</a><br />
+<span class="index-where">(in&nbsp;<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_resolve_error">test_resolve_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TH">TH</a><br />
 <span class="index-where">(in&nbsp;<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_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&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</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_file_dtd">test_resolve_file_dtd()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#THEAD">THEAD</a><br />
 <span class="index-where">(in&nbsp;<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_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&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</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_filelike_dtd">test_resolve_filelike_dtd()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</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&nbsp;<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.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&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</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_filename_dtd">test_resolve_filename_dtd()</a><br />
 <span class="index-where">(in&nbsp;<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-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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.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&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</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_filename_dtd_relative">test_resolve_filename_dtd_relative()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_dtd-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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.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&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</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_string_dtd">test_resolve_string_dtd()</a><br />
 <span class="index-where">(in&nbsp;<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-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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.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&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</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&nbsp;<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_root">test_root()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_errors-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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.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&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax-module.html">test_sax</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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.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&nbsp;<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-module.html">test_sax</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</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&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_http_io-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io-module.html">lxml.tests.test_http_io</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&nbsp;<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.ETreeSaxTestCase-class.html#test_sax_to_pulldom">test_sax_to_pulldom()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</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&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</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&nbsp;<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-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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">test_extension_element()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</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 />
+<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&nbsp;<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_schema_types_prefixed">test_schema_types_prefixed()</a><br />
 <span class="index-where">(in&nbsp;<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-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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_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&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</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&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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_apply_templates_elements_only">test_extension_element_apply_templates_elements_only()</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&nbsp;<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-module.html">test_schematron</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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_apply_templates_remove_blank_text">test_extension_element_apply_templates_remove_blank_text()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_elements_only">test_extension_element_apply_templates_elements_only()</a><br />
 <span class="index-where">(in&nbsp;<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">test_schematron()</a><br />
-<span class="index-where">(in&nbsp;<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.ETreeSchematronTestCase-class.html#test_schematron">test_schematron()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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_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_remove_blank_text">test_extension_element_apply_templates_remove_blank_text()</a><br />
 <span class="index-where">(in&nbsp;<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">test_schematron()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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.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&nbsp;<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_abstract">test_schematron_abstract()</a><br />
+<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&nbsp;<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&nbsp;<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.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&nbsp;<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_assertValid">test_schematron_assertValid()</a><br />
+<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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_sax-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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_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&nbsp;<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_call">test_schematron_call()</a><br />
+<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&nbsp;<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&nbsp;<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_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&nbsp;<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_customization">test_schematron_customization()</a><br />
+<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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_threading-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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_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&nbsp;<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_elementtree_error">test_schematron_elementtree_error()</a><br />
-<span class="index-where">(in&nbsp;<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.ETreeSchematronTestCase-class.html#test_schematron_elementtree_error">test_schematron_elementtree_error()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_unicode-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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_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&nbsp;<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_elementtree_error">test_schematron_elementtree_error()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</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&nbsp;<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_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&nbsp;<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_empty_pattern">test_schematron_empty_pattern()</a><br />
+<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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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_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&nbsp;<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_error_log">test_schematron_error_log()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_fail_on_report">test_schematron_fail_on_report()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<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_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&nbsp;<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_fail_on_report">test_schematron_fail_on_report()</a><br />
+<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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a><br />
 <span class="index-where">(in&nbsp;<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_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions1">test_extensions1()</a><br />
-<span class="index-where">(in&nbsp;<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_from_element">test_schematron_from_element()</a><br />
+<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&nbsp;<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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html">ThreadPipelineTestCase</a><br />
 <span class="index-where">(in&nbsp;<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_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&nbsp;<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_from_file">test_schematron_from_file()</a><br />
+<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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</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&nbsp;<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_doctestcompare.DoctestCompareTest-class.html#test_extra_attributes">test_extra_attributes()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</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 />
+<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&nbsp;<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_invalid_args">test_schematron_invalid_args()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</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&nbsp;<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_doctestcompare.DoctestCompareTest-class.html#test_extra_children">test_extra_children()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_extra_attributes">test_extra_attributes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</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&nbsp;<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.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema">test_schematron_invalid_schema()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.Classes-class.html#toggle">toggle()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.Classes-class.html">Classes</a>)</span></td>
 </tr>
 <tr>
+<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_extra_children">test_extra_children()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.html.diff.token-class.html">token</a><br />
+<span class="index-where">(in&nbsp;<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_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_failure_preceding_text">test_failure_preceding_text()</a><br />
 <span class="index-where">(in&nbsp;<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_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema">test_schematron_invalid_schema()</a><br />
+<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&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.html.diff.token-class.html">token</a><br />
+<td width="33%" class="link-index"><a href="lxml.html.diff-module.html#tokenize">tokenize()</a><br />
 <span class="index-where">(in&nbsp;<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_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_failure_trailing_Element">test_failure_trailing_Element()</a><br />
 <span class="index-where">(in&nbsp;<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_invalid_schema_empty">test_schematron_invalid_schema_empty()</a><br />
+<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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.html.diff-module.html#tokenize">tokenize()</a><br />
+<td width="33%" class="link-index"><a href="lxml.html.diff-module.html#tokenize_annotated">tokenize_annotated()</a><br />
 <span class="index-where">(in&nbsp;<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_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_failure_trailing_text">test_failure_trailing_text()</a><br />
 <span class="index-where">(in&nbsp;<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_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema_empty">test_schematron_invalid_schema_empty()</a><br />
+<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&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</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&nbsp;<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_feed_parser_bytes">test_feed_parser_bytes()</a><br />
-<span class="index-where">(in&nbsp;<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_invalid_schema_namespace">test_schematron_invalid_schema_namespace()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</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&nbsp;<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_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&nbsp;<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_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema_namespace">test_schematron_invalid_schema_namespace()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</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&nbsp;<a href="lxml.etree.XSLT-class.html">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_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&nbsp;<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_phases">test_schematron_phases()</a><br />
+<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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree-module.html#tostring">tostring()</a><br />
 <span class="index-where">(in&nbsp;<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_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&nbsp;<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_phases_kwarg">test_schematron_phases_kwarg()</a><br />
+<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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree-module.html#tostringlist">tostringlist()</a><br />
 <span class="index-where">(in&nbsp;<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_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&nbsp;<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_relaxng_embedded">test_schematron_relaxng_embedded()</a><br />
+<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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree-module.html#tounicode">tounicode()</a><br />
 <span class="index-where">(in&nbsp;<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_feed_parser_recover">test_feed_parser_recover()</a><br />
-<span class="index-where">(in&nbsp;<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.ETreeISOSchematronTestCase-class.html#test_schematron_result_report">test_schematron_result_report()</a><br />
+<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&nbsp;<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_store_schematron">test_schematron_store_schematron()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TR">TR</a><br />
 <span class="index-where">(in&nbsp;<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_feed_parser_recover_no_id_dict">test_feed_parser_recover_no_id_dict()</a><br />
+<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&nbsp;<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.ETreeISOSchematronTestCase-class.html#test_schematron_store_schematron">test_schematron_store_schematron()</a><br />
+<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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorDomains-class.html#TREE">TREE</a><br />
 <span class="index-where">(in&nbsp;<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_feed_parser_unicode">test_feed_parser_unicode()</a><br />
-<span class="index-where">(in&nbsp;<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_store_xslt">test_schematron_store_xslt()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_feed_parser_recover_no_id_dict">test_feed_parser_recover_no_id_dict()</a><br />
+<span class="index-where">(in&nbsp;<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.ETreeISOSchematronTestCase-class.html#test_schematron_validate">test_schematron_validate()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#TREE_INVALID_DEC">TREE_INVALID_DEC</a><br />
 <span class="index-where">(in&nbsp;<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._XMLPullParserTest-class.html#test_feed_while_iterating">test_feed_while_iterating()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</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 />
+<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&nbsp;<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_xmlschema_embedded">test_schematron_xmlschema_embedded()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#TREE_INVALID_HEX">TREE_INVALID_HEX</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.BytesIOXmlFileTestCase-class.html#test_filelike_close">test_filelike_close()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.BytesIOXmlFileTestCase-class.html">BytesIOXmlFileTestCase</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&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_feed_while_iterating">test_feed_while_iterating()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_set_decl_html">test_set_decl_html()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#TREE_NOT_UTF8">TREE_NOT_UTF8</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html#test_filelike_close">test_filelike_close()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html">SimpleFileLikeXmlFileTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_set_decl_html">test_set_decl_html()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.BytesIOXmlFileTestCase-class.html#test_filelike_close">test_filelike_close()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.BytesIOXmlFileTestCase-class.html">BytesIOXmlFileTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_set_decl_public">test_set_decl_public()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify-module.html#TREE_PYTYPE">TREE_PYTYPE</a><br />
 <span class="index-where">(in&nbsp;<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_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html#test_filelike_not_closing">test_filelike_not_closing()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html#test_filelike_close">test_filelike_close()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html">SimpleFileLikeXmlFileTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_set_decl_public">test_set_decl_public()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_set_decl_system">test_set_decl_system()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#TREE_UNTERMINATED_ENTITY">TREE_UNTERMINATED_ENTITY</a><br />
 <span class="index-where">(in&nbsp;<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_findall">test_findall()</a><br />
-<span class="index-where">(in&nbsp;<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_set_decl_system">test_set_decl_system()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html#test_filelike_not_closing">test_filelike_not_closing()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html">SimpleFileLikeXmlFileTestCase</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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.TreeBuilder-class.html">TreeBuilder</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree-module.html">lxml.etree</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&nbsp;<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_set_string">test_set_string()</a><br />
-<span class="index-where">(in&nbsp;<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&nbsp;<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&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</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_findall_different_nsmaps">test_findall_different_nsmaps()</a><br />
-<span class="index-where">(in&nbsp;<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_set_text">test_set_text()</a><br />
+<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&nbsp;<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_set_text2">test_set_text2()</a><br />
 <span class="index-where">(in&nbsp;<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.builder-module.html#TT">TT</a><br />
 <span class="index-where">(in&nbsp;<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_findall_empty_prefix">test_findall_empty_prefix()</a><br />
+<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&nbsp;<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_set_text2">test_set_text2()</a><br />
+<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&nbsp;<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._LogEntry-class.html#type">type</a><br />
 <span class="index-where">(in&nbsp;<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_elementtree._ETreeTestCaseBase-class.html#test_findall_ns">test_findall_ns()</a><br />
-<span class="index-where">(in&nbsp;<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 />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_empty_prefix">test_findall_empty_prefix()</a><br />
+<span class="index-where">(in&nbsp;<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_set_text_none">test_set_text_none()</a><br />
 <span class="index-where">(in&nbsp;<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.InputElement-class.html#type">type</a><br />
 <span class="index-where">(in&nbsp;<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_findall_ns">test_findall_ns()</a><br />
-<span class="index-where">(in&nbsp;<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_set_text_none">test_set_text_none()</a><br />
+<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&nbsp;<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.PyType-class.html#type_check">type_check</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.PyType-class.html">PyType</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&nbsp;<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_setattr">test_setattr()</a><br />
+<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&nbsp;<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&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._LogEntry-class.html#type_name">type_name</a><br />
 <span class="index-where">(in&nbsp;<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_objectify.ObjectifyTestCase-class.html#test_findall_ns">test_findall_ns()</a><br />
+<span class="index-where">(in&nbsp;<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_setitem">test_setitem()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</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&nbsp;<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&nbsp;<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_setitem2">test_setitem2()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index">&nbsp;</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 Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d642fab75d5bd180dcaf038b583e0e4cfbebfccc..b376d78ebd5e464cb95e2c3472242d6a14056f77 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f98d56d88ad084a278d3c4d5715167c91f0f06d1..4acb7f8f017d323d472cd88da1871bcd9cd6731f 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ccf4fc89bfaeb8140322026a3351991f772b8052..8430286c13eea0b6902b105b97ab9eb6ff329d2c 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 012546e7c0a064ce783a0b648bc7f591be389188..6a144b1e3da401d9e2cfec687d3cea6a437d01a4 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e16c87f730ac787d26efc3f3331abf164099ac0d..ce1a4afd1a4e52c8641ac007c02e07a795abbb44 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 552d835d0a310daf1ea8d18f03011474fc459700..1c95a08d92e7411a0841e1c02e40a3faf80e2fa1 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3b35013dff8d294c1254fa244c27c8aab108f392..51b33542aed35b7fbc8fda7fad58e69457307eeb 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index da66d571f2d5ac3e6602a12e0326db3e51952aa4..8a5d0d4620b549f872a8c7ae51816005c2651001 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0b89c0f6ec4b6c84f08de4c3fe53f72859804097..5b59b7b948e28793bd12f8102d7e5b469b596e77 100644 (file)
@@ -237,7 +237,7 @@ with statically linked libraries.</td>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 044e2b31da9d813c52964343a0a2641614048ada..fd50d546e5639b1ccc01adec23c13426ea82b75b 100644 (file)
@@ -123,7 +123,7 @@ 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 Thu Mar 17 15:04:27 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b82517d4bf4b1c25adf8ed4ec6879dc48244c589..0773480de6aa2f72d4ec7b019db8a7778ad79c12 100644 (file)
@@ -277,7 +277,7 @@ form of custom URL resolvers.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 906ae106b31a533c9ec12796d382a4829680c18d..24ef18653d9210b9b6a642f2e01d252b7283ab50 100644 (file)
@@ -543,7 +543,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3609f80b08eb9e9e233caed0aa762756caa4e166..c4ef47e9ad69a16894af8d50a90b5ed0aad05c4a 100644 (file)
@@ -229,7 +229,7 @@ exceptions.BaseException --+           |
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f608ddde261a86def86a4b3870697e06206ef5c4..a7f450251a758db2e5afefcbc15aaf2e2e5af734 100644 (file)
@@ -202,7 +202,7 @@ The <tt class="rst-rst-rst-docutils literal rst-rst-docutils literal rst-docutil
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1b0776dc7d3245d883234520c1a752b6aa3b5aff..e2c330dae3871952283d924390ce0dc910515454 100644 (file)
@@ -464,7 +464,7 @@ 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 Thu Mar 17 15:04:28 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7ca52b8893fb579f8465681090b1d0a0917cee38..d8e19d141c10458940d7a701dce22eea0424a0fd 100644 (file)
@@ -352,7 +352,7 @@ and/or a specific target <tt class="rst-docutils literal">namespace</tt> to the
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ee47b23553ab7f4c4cbf24ed4e42dbd51dc98763..771c453d452618ffe6298438101afb4040270483 100644 (file)
@@ -231,7 +231,7 @@ See the <a href="lxml.cssselect.CSSSelector-class.html" class="link">CSSSelector
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f8b9a16eb3a25339cf90f5d1b22fdf1105407dea..c564d874e38b4b1256737aaacfe4e7f391375920 100644 (file)
@@ -304,7 +304,7 @@ 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 Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dadfe8e2bb99863455ebc0e4b3cbc62e57b67f14..885dc89dd26466b8ddb95e6cdf743856e82221ec 100644 (file)
@@ -308,7 +308,7 @@ mapping as <tt class="rst-docutils literal">namespaces</tt> keyword argument:</p
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 67d0e011186ec29415fd5dd310f55d643eb545e5..d1ea04ee0679cb9dac50cfd29e717037809407c0 100644 (file)
@@ -310,7 +310,7 @@ lxml extensions + HTML support.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a4200cae04d6c1beddf47de92d480904ad49ca07..659f39fd041ba5e0f4ac99ded0eda21db842e4b7 100644 (file)
@@ -362,7 +362,7 @@ A custom CSS selector to XPath translator with lxml-specific extensions.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 205431a00354e93d10bdd644a304ab47a724e6a6..e54453186ca95bebae299e9c3329b8451b0d2583 100644 (file)
@@ -493,7 +493,7 @@ etree.HTMLParser(recover= False, remove_blank_text= True)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bb1dea1c228010221fd14ea2430cacc8e2b7d0c2..474f79a6c2506d835448a2d0794af1bc8bc0cc28 100644 (file)
@@ -1123,7 +1123,7 @@ 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 Thu Mar 17 15:04:28 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1cdeef75f21412702571f3bfbdf61a2007f4aa08..76456a3ec7d665d06f8e4128deb136ab63d3b689 100644 (file)
@@ -229,7 +229,7 @@ doctest.OutputChecker --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 558d5a5d31832008272f8969d7e8eb023a70a6bd..8390678445cd5be80d08a511204bf4e4a0a29678 100644 (file)
@@ -610,7 +610,7 @@ to compare <code class="link">want</code> and <code class="link">got</code>.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 416e0d54fd269f1e539b57f4f5a6967823ac5caf..49a71fd43fa96448389c7c10f0f913f0a9db4fa2 100644 (file)
@@ -349,7 +349,7 @@ object --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a5cd2b1e5d2cdfc33eba01010191e171a174de9b..d5eed1d878cd73d86b921622f3cf60e0572d672b 100644 (file)
@@ -65,7 +65,7 @@ The <tt class="rst-rst-rst-docutils literal rst-rst-docutils literal rst-docutil
 
 <hr />
 <div class="fields">      <p><strong>Version:</strong>
-        3.6.0
+        3.6.1
       </p>
 </div><!-- ==================== CLASSES ==================== -->
 <a name="section-Classes"></a>
@@ -317,7 +317,7 @@ Iterates over the text content of a subtree.
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
         <a href="lxml.etree.HTMLParser-class.html" class="summary-name">HTMLParser</a><br />
-      HTMLParser(self, encoding=None, remove_blank_text=False,                    remove_comments=False, remove_pis=False, strip_cdata=True,                    no_network=True, target=None, XMLSchema schema=None,                    recover=True, compact=True)
+      HTMLParser(self, encoding=None, remove_blank_text=False,                    remove_comments=False, remove_pis=False, strip_cdata=True,                    no_network=True, target=None, schema: XMLSchema =None,                    recover=True, compact=True)
     </td>
   </tr>
 <tr class="private">
@@ -550,7 +550,7 @@ XInclude processor.
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
         <a href="lxml.etree.XMLParser-class.html" class="summary-name">XMLParser</a><br />
-      XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, XMLSchema schema=None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
+      XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
     </td>
   </tr>
 <tr class="private">
@@ -1705,7 +1705,7 @@ standard Python logging package.</td>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="LXML_VERSION"></a><span class="summary-name">LXML_VERSION</span> = <code title="(3, 6, 0, 0)"><code class="variable-group">(</code>3<code class="variable-op">, </code>6<code class="variable-op">, </code>0<code class="variable-op">, </code>0<code class="variable-group">)</code></code>
+        <a name="LXML_VERSION"></a><span class="summary-name">LXML_VERSION</span> = <code title="(3, 6, 1, 0)"><code class="variable-group">(</code>3<code class="variable-op">, </code>6<code class="variable-op">, </code>1<code class="variable-op">, </code>0<code class="variable-group">)</code></code>
     </td>
   </tr>
 <tr class="private">
@@ -1721,13 +1721,13 @@ standard Python logging package.</td>
       <span class="summary-type">&nbsp;</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': &lt;capsule object &quot;void (struct LxmlElement *, struct Lx\
-mlElement *)&quot; at 0x2ad9e6c47450&gt;,
+mlElement *)&quot; at 0x2b8b5c8483f0&gt;,
  'appendChildToElement': &lt;capsule object &quot;int (struct LxmlElement *, s\
-truct LxmlElement *)&quot; at 0x2ad9e6c47480&gt;,
+truct LxmlElement *)&quot; at 0x2b8b5c848420&gt;,
  'attributeValue': &lt;capsule object &quot;PyObject *(xmlNode *, xmlAttr *)&quot; \
-at 0x2ad9e6c47120&gt;,
+at 0x2b8b5c8480c0&gt;,
  'attributeValueFromNsName': &lt;capsule object &quot;PyObject *(xmlNode *, co\
-nst xmlChar *, const xmlChar *)&quot; at 0x2ad9e6c47150&gt;,
+nst xmlChar *, const xmlChar *)&quot; at 0x2b8b5c8480f0&gt;,
 ..."><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>&lt;capsule object &quot;void (struct L<code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
@@ -1750,7 +1750,7 @@ nst xmlChar *, const xmlChar *)&quot; at 0x2ad9e6c47150&gt;,
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="memory_debugger"></a><span class="summary-name">memory_debugger</span> = <code title="&lt;lxml.etree._MemDebug object at 0x2ad9e291f8a0&gt;">&lt;lxml.etree._MemDebug object at 0x2ad9e291f8a0&gt;</code>
+        <a name="memory_debugger"></a><span class="summary-name">memory_debugger</span> = <code title="&lt;lxml.etree._MemDebug object at 0x2b8b585208a0&gt;">&lt;lxml.etree._MemDebug object at 0x2b8b585208a0&gt;</code>
     </td>
   </tr>
 </table>
@@ -2432,13 +2432,13 @@ function will only set the global error log of the current thread.</p>
     <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>&lt;capsule object &quot;void (struct LxmlElement *, struct Lx<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-mlElement *)&quot; at 0x2ad9e6c47450&gt;<code class="variable-op">,</code>
+mlElement *)&quot; at 0x2b8b5c8483f0&gt;<code class="variable-op">,</code>
  <code class="variable-quote">'</code><code class="variable-string">appendChildToElement</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;int (struct LxmlElement *, s<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-truct LxmlElement *)&quot; at 0x2ad9e6c47480&gt;<code class="variable-op">,</code>
+truct LxmlElement *)&quot; at 0x2b8b5c848420&gt;<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>&lt;capsule object &quot;PyObject *(xmlNode *, xmlAttr *)&quot; <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-at 0x2ad9e6c47120&gt;<code class="variable-op">,</code>
+at 0x2b8b5c8480c0&gt;<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>&lt;capsule object &quot;PyObject *(xmlNode *, co<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-nst xmlChar *, const xmlChar *)&quot; at 0x2ad9e6c47150&gt;<code class="variable-op">,</code>
+nst xmlChar *, const xmlChar *)&quot; at 0x2b8b5c8480f0&gt;<code class="variable-op">,</code>
 <code class="variable-ellipsis">...</code>
 </pre></td></tr></table>
 </dd>
@@ -2503,7 +2503,7 @@ nst xmlChar *, const xmlChar *)&quot; at 0x2ad9e6c47150&gt;<code class="variable
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7068c1e90960a1a97fc64216d8071732b4bd09ac..a46e0dd548c9a0ccbeeb7718aed8c23897f81c8b 100644 (file)
@@ -233,7 +233,7 @@ Iterates over the ancestors of an element (from parent to parent).
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index da51004074fed2296446543d49e7e2b7eef8d868..c0c816021c14e550a31bd9b1c549a88746993b39 100644 (file)
@@ -293,7 +293,7 @@ missing.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f9279eaa6b877ba25075858aa7e22c1ac822f7fa..7fd5dfba02a095f9ba405ff72703f9126f789f5b 100644 (file)
@@ -211,7 +211,7 @@ Error during C14N serialisation.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 08a867f899b746a7cfca5eec91fb8b26aba816ee..84ca30be5d3c1cb1c5e2bdf7b517302f540c87c4 100644 (file)
@@ -236,7 +236,7 @@ a string
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 516a614ee4f75583a4140aaf20a32a756a2b771e..20e1f5dc2fa9c1ad1d177f03c8d153b7653e5c56 100644 (file)
@@ -349,7 +349,7 @@ called after object creation.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c3d33f7ca19cc4eeff28d488ab095667e58b7496..772a6574125bcb0397ab829d1b9b6f3fa970f157 100644 (file)
@@ -272,7 +272,7 @@ lookup(self, type, doc, namespace, name)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index eaa356a70c45bef5ff22d05493c6a85758754a18..ce25f77d07c908239ac41484e865086f53ea4d75 100644 (file)
@@ -411,7 +411,7 @@ catalog.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 480bc629923f4a83a2cf5f8dea83b2a9657370e6..f6c3f9828653123281e22eb000b13391cd4af95a 100644 (file)
@@ -217,7 +217,7 @@ Base class for DTD errors.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bacf43c37a87c4946fba420b011195900b5a7da0..edfece733b396875b5c688a1f689c5aabb76af98 100644 (file)
@@ -213,7 +213,7 @@ Error while parsing a DTD.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 440bae840fc2e16c77fc9cbb391a0a2cd47492bc..14df502e604f1efd6240b4aad0cedca017cd2c59 100644 (file)
@@ -213,7 +213,7 @@ Error while validating an XML document with a DTD.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2b27e6c5a77596ef78851ecafbffc1224ee5a31f..bba8e1c9c23be3a1e46c5133ec666191057e88a8 100644 (file)
@@ -372,7 +372,7 @@ exist, setting this variable (even to None) will create one.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 27876840cf46f8e876c8e50ce14cf4318735ea0e..02b3b0f2e2e6effac8a1b92d2da9949cfda87fd5 100644 (file)
@@ -213,7 +213,7 @@ method fails.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 80b59416313dbe7fc3e4a8760aea05c4d110400e..de35ed78c04ae0d2ecc9e374750bb81e125df2a0 100644 (file)
@@ -325,7 +325,7 @@ and thus ignores comments and processing instructions.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5ef221358c4d1ae32621b5814f41be2e25380716..0f0b31a3168514d1855473f7517442481d8c43d2 100644 (file)
@@ -293,7 +293,7 @@ you pass <tt class="rst-docutils literal">smart_strings=False</tt>.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c43a08195dc991a5fc20ab5d10de3fdba679f9d2..ce355aec5a0f4c6d340379cfc588619483dd871f 100644 (file)
@@ -362,7 +362,7 @@ hierarchies that implement a common namespace.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cc3af6f3c5223e4ce56cbf16be57ede97c3ce9ef..91a5b784513a1f67ce9101614968129819b8f69c 100644 (file)
@@ -233,7 +233,7 @@ Iterates over the children of an element.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7e771bd795ed24aca28ce7e8acd0a7e6f0e215a2..d60f8a17f15262b9cf7c841c80963457b0084275 100644 (file)
@@ -232,7 +232,7 @@ Superclass of Element class lookups.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 31aa78ad5f1c2e44916573faf28cb2be9499651a..a75121bec3a68b741c2b6bbeb0a77657eea3f6f3 100644 (file)
@@ -306,7 +306,7 @@ accept the respective Element classes.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 885b183b96194433d5be0d39d58a1bb53f180984..53dbad491f431b1f6cde3d4fc1c2ced1b1af0e07 100644 (file)
@@ -287,7 +287,7 @@ tree it traverses is modified during iteration.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c4458a0acc111dd99a439b376bca88867e92c26f..720bae3a537485ba59e38a4f7d2dc22b3bd5ff4a 100644 (file)
@@ -319,7 +319,7 @@ Pass None for the empty namespace.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 055e107b26ab99d7f5084960dec8cdf0b08b23fe..813f7259b29b90631a226c345090e3fa83d91aec 100644 (file)
@@ -279,7 +279,7 @@ tail text (e.g. if you know that it's only whitespace from pretty-printing).</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b8481b21ff6027e27d28f6e583fc1e12d15f3c36..177946079db89eebf52e09a2b682b33bf3ec6e0b 100644 (file)
@@ -350,7 +350,7 @@ called after object creation.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ff14f20c9c204823e62bc764b6f175063557aa94..aa386b5f27b5efa2275484c2cfbf2e7de6cac9fe 100644 (file)
@@ -209,7 +209,7 @@ exceptions.BaseException --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 75a1c277f7990ebc9b467232144c2fab015e3dc8..f1ea2a15b2aad86b9d4ef10e85feabe507413502 100644 (file)
@@ -485,7 +485,7 @@ Libxml2 error domains
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dc7bee421f88781a999d05913e410af697d7fba9..6d47e08ffca94303c6831d59a1e32166c2c5e22f 100644 (file)
@@ -243,7 +243,7 @@ Libxml2 error levels
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 20eded03cca1d0e1d6427e6385b736f6138de806..6745281fcac054baafdd3b35f0088e3f6db0d403 100644 (file)
@@ -5406,7 +5406,7 @@ Libxml2 error types
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f0b7df3757eee3bdefebfee219683b56f0d58703..910391de9776e032385a71103455035064a89b17 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 60fbf3c9a7d626a0cb88a64173261d7448565d69..a2f2a1926d6bc7fb7f28b2216d0129c8b5869d74 100644 (file)
@@ -79,7 +79,7 @@
 </dd></dl>
 
 <hr />
-<p>HTMLParser(self, encoding=None, remove_blank_text=False,                    remove_comments=False, remove_pis=False, strip_cdata=True,                    no_network=True, target=None, XMLSchema schema=None,                    recover=True, compact=True)</p>
+<p>HTMLParser(self, encoding=None, remove_blank_text=False,                    remove_comments=False, remove_pis=False, strip_cdata=True,                    no_network=True, target=None, schema: XMLSchema =None,                    recover=True, compact=True)</p>
 <p>The HTML parser.</p>
 <p>This parser allows reading HTML into a normal XML tree.  By
 default, it can read broken (non well-formed) HTML, depending on
@@ -135,7 +135,7 @@ reasons.</p>
         <span class="summary-sig-arg">strip_cdata</span>=<span class="summary-sig-default">True</span>,
         <span class="summary-sig-arg">no_network</span>=<span class="summary-sig-default">True</span>,
         <span class="summary-sig-arg">target</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">XMLSchema schema</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">schema: XMLSchema</span>=<span class="summary-sig-default">None</span>,
         <span class="summary-sig-arg">recover</span>=<span class="summary-sig-default">True</span>,
         <span class="summary-sig-arg">compact</span>=<span class="summary-sig-default">True</span>)</span><br />
       x.__init__(...) initializes x; see help(type(x)) for signature</td>
@@ -261,7 +261,7 @@ reasons.</p>
         <span class="sig-arg">strip_cdata</span>=<span class="sig-default">True</span>,
         <span class="sig-arg">no_network</span>=<span class="sig-default">True</span>,
         <span class="sig-arg">target</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">XMLSchema schema</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">schema: XMLSchema</span>=<span class="sig-default">None</span>,
         <span class="sig-arg">recover</span>=<span class="sig-default">True</span>,
         <span class="sig-arg">compact</span>=<span class="sig-default">True</span>)</span>
     <br /><em class="fname">(Constructor)</em>
@@ -336,7 +336,7 @@ reasons.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e62761e6b8f012a53ba5d9b370f7c3aee94bb68e..170c9f98e6199e5e234b03bbe65281af90ef989a 100644 (file)
@@ -326,7 +326,7 @@ source, you can pass the <tt class="rst-docutils literal">base_url</tt>.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c13385ea474535e953abc2cd93bc96b067b42479..7b08a16640fe5b8752f4f2a6ad5e2711f7497b78 100644 (file)
@@ -273,7 +273,7 @@ this one.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e76eebc2b00547e132e5f662ef0d4c2bc4f628ba..157fdeff3d19003fba9be4cd924db94db9fb8336 100644 (file)
@@ -217,7 +217,7 @@ Base class of lxml registry errors.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0fea6dce3ffccd3ef395042ac826d5943901b543..4efad7fd6c7b10dc55bf6493aa2e83f3d0484cdb 100644 (file)
@@ -235,7 +235,7 @@ Base class for all syntax errors.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 06379581715df51c9503d94777c22bf7c9ecbf37..1e65534d7609850ff7fe03cafc836383e2b3c263 100644 (file)
@@ -213,7 +213,7 @@ Error registering a namespace extension.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9d0f954d5efd01da425d6fa901cbab86a258073a..7242872c69eb331d934c5d138e101c9dbe260668 100644 (file)
@@ -351,7 +351,7 @@ called after object creation.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 90d9de8cac7bd44c073a6d4ccdaa6c54424abf1c..af138669e6b1de588ad336ad760f478619a22229 100644 (file)
@@ -295,7 +295,7 @@ exceptions.BaseException --+           |
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8d88cd4e3fdf4742a5200d4ccc1dcc82e6156713..4c8da8e46fc844fc072f99465b6c281abbdbe4e5 100644 (file)
@@ -236,7 +236,7 @@ Element class lookup based on the XML parser.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c9b278ab218b6e6ea854fe909a1b92fd09b94718..f1a8ff48825b8db4ed02acb4135e3c0e28dd1935 100644 (file)
@@ -211,7 +211,7 @@ Internal lxml parser error.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e071345a7e9a30a593786dac23cbd0e248c0ff17..97c2e3e6ea25d8e1d403d1f71285bf7e312a760c 100644 (file)
@@ -433,7 +433,7 @@ format.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 974c034947a7a328085fdbe6d4982e042360a715..053c08b3b6999ab5dec65a39e22c75f3fe624610 100644 (file)
@@ -289,7 +289,7 @@ iteration methods).</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 935bb75902b75613cec4e09518b51af92daaa28e..fd4aace32ec7dd92a0d4ee766d6bd13af52014de 100644 (file)
@@ -486,7 +486,7 @@ their text content.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2ed5abae2b5373ecc67ba576b82c49fe41263a37..0d4523d36435f5c1f1ced4a5c4b7417af5bc4117 100644 (file)
@@ -341,7 +341,7 @@ filename through the <tt class="rst-docutils literal">file</tt> keyword argument
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a2b66b5cbfd04c518c9055c521a2cc0523cb3162..71c7053cf55cebdaf34297b71a42b9a6a9d792ca 100644 (file)
@@ -217,7 +217,7 @@ Base class for RelaxNG errors.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 396a07575d1e681e1df9a309df4cba76bcd420b5..b91aad5b7a71a40401e77ae78389fa6be5e9ee1f 100644 (file)
@@ -548,7 +548,7 @@ Libxml2 RelaxNG error types
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e4294abba73730f7138fb467fb832fc3af87264c..8868c687765bac6216b52b0ddae632e4942609eb 100644 (file)
@@ -213,7 +213,7 @@ Error while parsing an XML document as RelaxNG.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f86314c85931dcf79e30a95e18ed3bc3094506e6..79cad8394e2a408c15aaf31077e316711f4ea367 100644 (file)
@@ -213,7 +213,7 @@ Error while validating an XML document with a RelaxNG schema.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f386db83749e4a18b5d47551698f2f305b5e7cb8..75b0187e9517250de57edcb4a47b8beeb899708b 100644 (file)
@@ -454,7 +454,7 @@ argument.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 50ceac12778c669a7c66063a95d904ba48106221..9cc41730b8d245ab87110824c33805db48a588e4 100644 (file)
@@ -366,7 +366,7 @@ errors in lxml.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f34d173a1c0f9ac0aa4c4d4c5b0e8ef7b6f35a54..822c3b938e05110b370c60afa8aefcf94a0f2cee 100644 (file)
@@ -217,7 +217,7 @@ Base class of all Schematron errors.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 780fd774b162de032c163fb4c561c420469f46de..5680cdda119efbd85790a7ecbaf4497abd6d68b2 100644 (file)
@@ -213,7 +213,7 @@ Error while parsing an XML document as Schematron schema.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8d90b381321b5738ab95c7a1e9dc25ff57b492d9..138c36b5c7e9b73e114bb9dff72fb925fca2b7aa 100644 (file)
@@ -213,7 +213,7 @@ Error while validating an XML document with a Schematron schema.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index aa4f964af82a1a0a1b67134ab1b664173417e6ef..1df38e7fa3336797730b62ba4986230403da9c69 100644 (file)
@@ -211,7 +211,7 @@ A libxml2 error that occurred during serialisation.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a9a24c6997c5a2141d0f02a81d02de103ec3b37e..e86e222a6beca9ed69fe88932535015b319193e2 100644 (file)
@@ -234,7 +234,7 @@ Iterates over the siblings of an element.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7626e030574f7d5abca522b10ff55be3cf4a5cd8..3a3bc8337ab2136d7733d5a2a33f8b1da0b26ab8 100644 (file)
@@ -382,7 +382,7 @@ element.</td>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0bbb299263b3dd9126111d1e5be07b4ad7308a2e..de557a9bdc71ebc5dadd4f7e0256a919ae935ba6 100644 (file)
@@ -291,7 +291,7 @@ processing.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8ec7b240e643e92f2660adfd97781249f017ee21..a3c4e62efe71507fea6b023c49769d3706193a10 100644 (file)
@@ -211,7 +211,7 @@ Error during XInclude processing.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9225a0c28af0ebfeefd48ae88c6028547c026eac..18b0c536e4910d7c1acb796eeade59b53d51f5c3 100644 (file)
@@ -79,7 +79,7 @@
 </dd></dl>
 
 <hr />
-<p>XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, XMLSchema schema=None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)</p>
+<p>XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)</p>
 <p>The XML parser.</p>
 <p>Parsers can be supplied as additional argument to various parse
 functions of the lxml API.  A default parser is always available
@@ -167,7 +167,7 @@ apply to the default parser.</p>
         <span class="summary-sig-arg">no_network</span>=<span class="summary-sig-default">True</span>,
         <span class="summary-sig-arg">ns_clean</span>=<span class="summary-sig-default">False</span>,
         <span class="summary-sig-arg">recover</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">XMLSchema schema</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">schema: XMLSchema</span>=<span class="summary-sig-default">None</span>,
         <span class="summary-sig-arg">remove_blank_text</span>=<span class="summary-sig-default">False</span>,
         <span class="summary-sig-arg">resolve_entities</span>=<span class="summary-sig-default">True</span>,
         <span class="summary-sig-arg">remove_comments</span>=<span class="summary-sig-default">False</span>,
@@ -299,7 +299,7 @@ apply to the default parser.</p>
         <span class="sig-arg">no_network</span>=<span class="sig-default">True</span>,
         <span class="sig-arg">ns_clean</span>=<span class="sig-default">False</span>,
         <span class="sig-arg">recover</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">XMLSchema schema</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">schema: XMLSchema</span>=<span class="sig-default">None</span>,
         <span class="sig-arg">remove_blank_text</span>=<span class="sig-default">False</span>,
         <span class="sig-arg">resolve_entities</span>=<span class="sig-default">True</span>,
         <span class="sig-arg">remove_comments</span>=<span class="sig-default">False</span>,
@@ -380,7 +380,7 @@ apply to the default parser.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 13bb8dc65c1c1219c19803b0ab4c927eb16cc4e4..23ba2df7563e1865e6292ff80595d4495bfe983a 100644 (file)
@@ -324,7 +324,7 @@ source, you can pass the <tt class="rst-docutils literal">base_url</tt>.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d81ee72f380e62fbe675f5da00de32e39222adc9..3e1e95078836bec9c45cf9d6b7b1169e311135c3 100644 (file)
@@ -327,7 +327,7 @@ schema insert default/fixed attributes into validated documents.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9574c9dc70efcc8fce06c2a56636478ec3a20288..e7a49fa384cae75bc7ca7022777558fb4a5e4ac4 100644 (file)
@@ -217,7 +217,7 @@ Base class of all XML Schema errors
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 82971ffea9ae1e2654808c2c52f8b596f43685f7..9b710a4d764f0b548b30739417dd98f638a1c9d0 100644 (file)
@@ -213,7 +213,7 @@ Error while parsing an XML document as XML Schema.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 72f75dd1ce1d58cbd66cddb8bf308f0d50d83776..4168d3939e9dd6985d6a5a2dfc30cb0ad4003dd5 100644 (file)
@@ -213,7 +213,7 @@ Error while validating an XML document with an XML Schema.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 452f6896af5d080336d77d6f6c63ac971c2a6079..94fc25fd015818e4cfdf3af0f8ece89e996ac67d 100644 (file)
@@ -233,7 +233,7 @@ Syntax error while parsing an XML document.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6b0f1cf6fa2f56022975c826d9b43219818ac2db..553a2f1b6cbdef5d92143f911d0792b4b593902e 100644 (file)
@@ -361,7 +361,7 @@ returned for string results unless you pass
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index df62c9146c0faef43d23604ca3f45c542b3083a7..d05961b174699f06b6dc0a798712df821460945a 100644 (file)
@@ -340,7 +340,7 @@ are currently not supported for variables.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8a0c943559f7d891db141a4c2be8b07c263386ce..c81079ee0ae07aac01fe85226c4d881015d8b92c 100644 (file)
@@ -375,7 +375,7 @@ against the ElementTree as returned by getroottree().</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 10929906b4ae91fa639e0a21a83fde35ff84417c..825137ec2b2da1ce0d41d115b54829447c97ee9a 100644 (file)
@@ -217,7 +217,7 @@ Base class of all XPath errors.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 431b35695984e82c9c996e7d297c7a23a4040066..915e4fc67bb822757853d1852c7bfab38a9bd90b 100644 (file)
@@ -219,7 +219,7 @@ Error during XPath evaluation.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9d7750277230521c4dbac784c498b69eae4ae3ac..31a8460ef24282d72eb1432badbe34542be448ae 100644 (file)
@@ -215,7 +215,7 @@ Internal error looking up an XPath extension function.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a64cbd6a8daa98b2c72cc52d1c2cb94b436a29bd..e21b70ae73699a08fb64060ea2712cb222314b39 100644 (file)
@@ -215,7 +215,7 @@ Error handling an XPath result.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 10020c29a7c113bd4cd719dca63d3a15b729f711..e89c31940cdeddb8e7b1e7440d244ea73e9fe52b 100644 (file)
@@ -241,7 +241,7 @@ exceptions.BaseException --+               |
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 75009ce502bd8b4f58596838f02c8819c0a6a0f5..2905bce6dbf17b42a6b8a06d8eea5cbae4c8bf70 100644 (file)
@@ -575,7 +575,7 @@ result = transform(doc, some_strval = XSLT.strparam(
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6e32a43f17effd48b6035f07ead20419a3a664c0..6644f0064949e59e169197f1085e0098f5a25f3e 100644 (file)
@@ -428,7 +428,7 @@ XSLTAccessControl(create_dir=False, read_file=True, read_network=True,<span clas
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8976690b4d8f4f40389281ec82531554bae25696..c5c30dc101d3c7046e195aa371180ed3aa6d1d69 100644 (file)
@@ -213,7 +213,7 @@ Error running an XSL transformation.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 06fbb53417ab5f5d200ca2ca4d886c92df55170c..cd5220fe33da6b390333a6efbed6898745d4c77a 100644 (file)
@@ -217,7 +217,7 @@ Base class of all XSLT errors.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 413ee9ac6e841f693f1e3601f1fc464d967c681e..d9e44338e4796b6bdd1101f873e3fcfecf9e3a41 100644 (file)
@@ -397,7 +397,7 @@ case.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index df97525f479c73aa276e3807a79e4e89e2affdc4..d87d6c3493890c6fc4105ee7b110b4498ef98c9c 100644 (file)
@@ -213,7 +213,7 @@ Error registering an XSLT extension.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ae2e56e54118a4a0b7856714106079fb45f14ef6..40bd8c0e300d2e13ab818ba837cd25f75ab221c7 100644 (file)
@@ -213,7 +213,7 @@ Error parsing a stylesheet document.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b448a4714a56c439df9a68dadc8b4722ff7308ae..e35d9faee7cd8f6d6df1291855390a95763e7642 100644 (file)
@@ -213,7 +213,7 @@ Error serialising an XSLT result.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 23fc2d60cd375bb673091da5a6dbdc53452ac96f..2b3c2c093e4e55bbc32d98feddf05724b87dba21 100644 (file)
@@ -704,7 +704,7 @@ A dict-like proxy for the <tt class="rst-rst-rst-docutils literal rst-rst-docuti
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9bffa9aeb1e6e5131936e93c9d302b37658e166b..87645ec7cdbef1da5da70f8969d3fc1bec2311dd 100644 (file)
@@ -346,7 +346,7 @@ object --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 577d5de5da0520b9edcc51d35cfeb737806162f7..6866cd0a8388630476a96a48c21b1b0d4678532b 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2d935ecc821a53d6de9ceb338731aaa4a27e1a45..4d29d343428304f66fdbecaef3f875c8aefa935e 100644 (file)
@@ -227,7 +227,7 @@ document is cleaned up.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1054bddb1dd343015b4fdef3792648b470cac734..cda6ab01efa6e5828e31354e2a4b3e84ca1ea0f1 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 940a29900560928fb783dae374a35983cf016109..b1bd7e5ba278a5a64699fd97c033581996682d4d 100644 (file)
@@ -1641,7 +1641,7 @@ parents.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 524e028459c8ff8a99d46f3320c34bc8b307410e..323c373541cfa05665feb4d892006a81fa81785a 100644 (file)
@@ -276,7 +276,7 @@ Dead but public. :)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2b7ed75f8a4b1bcf1e20c8b3b901f1691139dda7..e694afe957e0c3b72f22525b2cccc4190af43829 100644 (file)
@@ -278,7 +278,7 @@ object --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b9439340a503157c7a23a07154b6603df019ca19..3cc7118a619a76239cc8aac522f5e2b3e5ab47fc 100644 (file)
@@ -267,7 +267,7 @@ basestring --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fefe91aaedc859967cfa6ea714706d5f5a339d84..52680c826fd1b59d5ae0f94ca0fac5338460910b 100644 (file)
@@ -231,7 +231,7 @@ Dead but public. :)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index feeb36eae9f93c1c882c11747e80405d96cc6545..59ac7cf4ecf29bfaf95997b355743ac2be805aed 100644 (file)
@@ -1071,7 +1071,7 @@ class directly.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 428576a9aa57520b7336e79985868178bf9e2feb..5bd74728c1d9180588e9bf858aff475c8d401c6f 100644 (file)
@@ -333,7 +333,7 @@ basestring --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 29506e6a46e4e448968513fc72980ea75f3803ac..9712f45f9f0f03bf90bea05893f1a77bbb04546e 100644 (file)
@@ -356,7 +356,7 @@ the value None, if there was no text.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fb7b17046b25bfd15347c20a149fa46c1ebef1ff..feb0bd0ddc65513159041ee3904f4cb38c95f9bb 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cf55a0c3b8d3609f1761f9adfcfd50619ed4625c..f74b759cf3c94060f74be0bfa4ca363d89c81e3e 100644 (file)
@@ -377,7 +377,7 @@ different from what the <tt class="rst-docutils literal">error_log</tt> property
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fdf047b46a7b7738de0f84ecb6f113fd8f802bf8..ea2c6a087dfa978920656a418df7c53a4ae83240 100644 (file)
@@ -482,7 +482,7 @@ that were created or modified 'by hand' are not supported.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 185075f9abca9fc88cae4af4237619215fa1a3b7..8b2fc6c2db201e923deaac83360a46d6b97062f6 100644 (file)
@@ -570,7 +570,7 @@ entries.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 06569953222f8ac434ad28a4b0cc3a39ed20fcec..8e118f77c4f7e6332bf6974479b449fd81b6f141 100644 (file)
@@ -347,7 +347,7 @@ object --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b9732d62291aed712831f4e45a3761445628fcb2..8b6372ac96c6e0889ccd75a91494d716ba204ba7 100644 (file)
@@ -408,7 +408,7 @@ It is not guaranteed to work for all possible text content.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8924b86788dee8b29065abc82ca7d792772752f4..ca19e39812629fe1ba4027bb0c663a8c451950f0 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9a5120dbc81cde02bb55f30b371e396f5ad07b4b..4d57f00226e2dea11ecf3f945053e07154351588 100644 (file)
@@ -229,7 +229,7 @@ object --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8e54d51c9d29b2123959916bfecf0cf265a943cf..7e9d49306c0f1d01edfed6f37797eb7f83029c03 100644 (file)
@@ -262,7 +262,7 @@ exceptions.BaseException --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index df92bf78e2a9674df1e969206ee48824f28cb46d..42cb7a8c2ae7d822f9f6f29178a11a7f3dd2b9e7 100644 (file)
@@ -346,7 +346,7 @@ Base class for XML validators.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c5406883fc15ab779b38f74b38c44886f53373c0..90703b8481376a991ec702631452943ddd863e19 100644 (file)
@@ -322,7 +322,7 @@ are currently not supported for variables.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4de6274401beff31e219e2c4976847eb1839c05c..0192174f2152ffe8f611457c9f2368bb5fc1f13e 100644 (file)
@@ -390,7 +390,7 @@ the processing instruction.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b3c7d978ee7ec220ede1c725a4a8ab8f3fb0d43a..8e210844a87d09e44d3ef8de4d1ce2f46033b8c2 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d251e99a5bd285a52a1cad3f1c306a1af1e0574c..6219ffead5872cc5a6deb4d02f02269848312879 100644 (file)
@@ -282,7 +282,7 @@ xmlfile.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0f2178d2873b73d84eaaa25a278b6b552b48d3f7..821fa5ecfddde824430ad88c6279f6ebd63e2eeb 100644 (file)
@@ -500,7 +500,7 @@ attribute default values are requested.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1d56539e828549c9f8e3af20bad21808b86c0cb3..d1775c88b727fb14c515a2e07a096f6f7c2ad464 100644 (file)
@@ -323,7 +323,7 @@ was parsing XML data with <tt class="rst-docutils literal">iterparse()</tt>.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 49454bd7064b500a3e6bcc13afe7dd3dd45dab20..5bcddb6dbe82032985c9d34ecd8a14b9b39ce952 100644 (file)
@@ -342,7 +342,7 @@ explicitly flush any pending output when buffering is enabled.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index de7c7d3668e8646214dd23a79a67e8490c38972b..d9592234e972be5ec060ffbb112c111624175b3a 100644 (file)
@@ -876,56 +876,56 @@ XHTML namespace.</td>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="find_class"></a><span class="summary-name">find_class</span> = <code title="&lt;lxml.html._MethodFunc object at 0x2ad9e7dffa50&gt;">&lt;lxml.html._MethodFunc object at 0x2ad9e7dffa50&gt;</code>
+        <a name="find_class"></a><span class="summary-name">find_class</span> = <code title="&lt;lxml.html._MethodFunc object at 0x2b8b5da01ad0&gt;">&lt;lxml.html._MethodFunc object at 0x2b8b5da01ad0&gt;</code>
     </td>
   </tr>
 <tr>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="find_rel_links"></a><span class="summary-name">find_rel_links</span> = <code title="&lt;lxml.html._MethodFunc object at 0x2ad9e7dffa10&gt;">&lt;lxml.html._MethodFunc object at 0x2ad9e7dffa10&gt;</code>
+        <a name="find_rel_links"></a><span class="summary-name">find_rel_links</span> = <code title="&lt;lxml.html._MethodFunc object at 0x2b8b5da01a90&gt;">&lt;lxml.html._MethodFunc object at 0x2b8b5da01a90&gt;</code>
     </td>
   </tr>
 <tr class="private">
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="html_parser"></a><span class="summary-name">html_parser</span> = <code title="&lt;lxml.html.HTMLParser object at 0x2ad9e7daa7e0&gt;">&lt;lxml.html.HTMLParser object at 0x2ad9e7daa7e0&gt;</code>
+        <a name="html_parser"></a><span class="summary-name">html_parser</span> = <code title="&lt;lxml.html.HTMLParser object at 0x2b8b5d9a6890&gt;">&lt;lxml.html.HTMLParser object at 0x2b8b5d9a6890&gt;</code>
     </td>
   </tr>
 <tr>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="iterlinks"></a><span class="summary-name">iterlinks</span> = <code title="&lt;lxml.html._MethodFunc object at 0x2ad9e7dffb10&gt;">&lt;lxml.html._MethodFunc object at 0x2ad9e7dffb10&gt;</code>
+        <a name="iterlinks"></a><span class="summary-name">iterlinks</span> = <code title="&lt;lxml.html._MethodFunc object at 0x2b8b5da01b90&gt;">&lt;lxml.html._MethodFunc object at 0x2b8b5da01b90&gt;</code>
     </td>
   </tr>
 <tr>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.html-module.html#make_links_absolute" class="summary-name">make_links_absolute</a> = <code title="&lt;lxml.html._MethodFunc object at 0x2ad9e7dffa90&gt;">&lt;lxml.html._MethodFunc object at 0x2ad9e<code class="variable-ellipsis">...</code></code>
+        <a href="lxml.html-module.html#make_links_absolute" class="summary-name">make_links_absolute</a> = <code title="&lt;lxml.html._MethodFunc object at 0x2b8b5da01b10&gt;">&lt;lxml.html._MethodFunc object at 0x2b8b5<code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.html-module.html#resolve_base_href" class="summary-name">resolve_base_href</a> = <code title="&lt;lxml.html._MethodFunc object at 0x2ad9e7dffad0&gt;">&lt;lxml.html._MethodFunc object at 0x2ad9e7d<code class="variable-ellipsis">...</code></code>
+        <a href="lxml.html-module.html#resolve_base_href" class="summary-name">resolve_base_href</a> = <code title="&lt;lxml.html._MethodFunc object at 0x2b8b5da01b50&gt;">&lt;lxml.html._MethodFunc object at 0x2b8b5da<code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="rewrite_links"></a><span class="summary-name">rewrite_links</span> = <code title="&lt;lxml.html._MethodFunc object at 0x2ad9e7dffb50&gt;">&lt;lxml.html._MethodFunc object at 0x2ad9e7dffb50&gt;</code>
+        <a name="rewrite_links"></a><span class="summary-name">rewrite_links</span> = <code title="&lt;lxml.html._MethodFunc object at 0x2b8b5da01bd0&gt;">&lt;lxml.html._MethodFunc object at 0x2b8b5da01bd0&gt;</code>
     </td>
   </tr>
 <tr class="private">
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="xhtml_parser"></a><span class="summary-name">xhtml_parser</span> = <code title="&lt;lxml.html.XHTMLParser object at 0x2ad9e7daa890&gt;">&lt;lxml.html.XHTMLParser object at 0x2ad9e7daa890&gt;</code>
+        <a name="xhtml_parser"></a><span class="summary-name">xhtml_parser</span> = <code title="&lt;lxml.html.XHTMLParser object at 0x2b8b5d9a6940&gt;">&lt;lxml.html.XHTMLParser object at 0x2b8b5d9a6940&gt;</code>
     </td>
   </tr>
 </table>
@@ -1301,7 +1301,7 @@ descendant-or-self::a[@rel]|descendant-or-self::x:a[@rel]
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-&lt;lxml.html._MethodFunc object at 0x2ad9e7dffa90&gt;
+&lt;lxml.html._MethodFunc object at 0x2b8b5da01b10&gt;
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -1319,7 +1319,7 @@ descendant-or-self::a[@rel]|descendant-or-self::x:a[@rel]
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-&lt;lxml.html._MethodFunc object at 0x2ad9e7dffad0&gt;
+&lt;lxml.html._MethodFunc object at 0x2b8b5da01b50&gt;
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -1357,7 +1357,7 @@ descendant-or-self::a[@rel]|descendant-or-self::x:a[@rel]
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4a41b5244252e57cffe202f7002d260f123a09f1..f2d12b770a1e2f1f36886bc7d49c7dfca4de7123 100644 (file)
@@ -2168,7 +2168,7 @@ xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return docl
 <a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-568" class="py-name" targets="Variable lxml.html.InputElement.checkable=lxml.html.InputElement-class.html#checkable"><a title="lxml.html.InputElement.checkable" class="py-name" href="#" onclick="return doclink('link-568', 'checkable', 'link-568');">checkable</a></tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-569" class="py-name" targets="Variable lxml.html.InputElement.checked=lxml.html.InputElement-class.html#checked"><a title="lxml.html.InputElement.checked" class="py-name" href="#" onclick="return doclink('link-569', 'checked', 'link-569');">checked</a></tt><tt class="py-op">:</tt> </tt>
 <a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">                    <tt class="py-keyword">continue</tt> </tt>
 <a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-570" class="py-name"><a title="lxml.etree._LogEntry.type
-lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-570', 'type', 'link-275');">type</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'submit'</tt><tt class="py-op">,</tt> <tt class="py-string">'image'</tt><tt class="py-op">,</tt> <tt class="py-string">'reset'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-570', 'type', 'link-275');">type</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'submit'</tt><tt class="py-op">,</tt> <tt class="py-string">'image'</tt><tt class="py-op">,</tt> <tt class="py-string">'reset'</tt><tt class="py-op">,</tt> <tt class="py-string">'file'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
 <a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">                    <tt class="py-keyword">continue</tt> </tt>
 <a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">                <tt id="link-571" class="py-name"><a title="lxml.html.CheckboxGroup.value
 lxml.html.InputElement.value
@@ -4012,7 +4012,7 @@ 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 Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a1a5a2e63f1389ed8f4f185d7e483b2097376e64..6d8fbadac95802d5e39b634268844caaa67054db 100644 (file)
@@ -362,7 +362,7 @@ uncheck individual checkboxes according to their value.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4d0f62e655ca1dd8568281053be21e711dda8ac1..9ef9c63a3a5affdbfe7200a35a612301394fe603 100644 (file)
@@ -536,7 +536,7 @@ checkboxes with the same name.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0ac94233de3e7b3222c4f5ec26a664119be5be71..8bd22d61ed87be2de362b7f3412d23c52523d0f4 100644 (file)
@@ -397,7 +397,7 @@ False
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.html.Classes-class.html#_abc_negative_cache" class="summary-name" onclick="show_private();">_abc_negative_cache</a> = <code title="&lt;_weakrefset.WeakSet object at 0x2ad9e7dff890&gt;">&lt;_weakrefset.WeakSet object at 0x2ad9e7d<code class="variable-ellipsis">...</code></code>
+        <a href="lxml.html.Classes-class.html#_abc_negative_cache" class="summary-name" onclick="show_private();">_abc_negative_cache</a> = <code title="&lt;_weakrefset.WeakSet object at 0x2b8b5da01910&gt;">&lt;_weakrefset.WeakSet object at 0x2b8b5da<code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr class="private">
@@ -411,7 +411,7 @@ False
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="_abc_registry"></a><span class="summary-name">_abc_registry</span> = <code title="&lt;_weakrefset.WeakSet object at 0x2ad9e7dff250&gt;">&lt;_weakrefset.WeakSet object at 0x2ad9e7dff250&gt;</code>
+        <a name="_abc_registry"></a><span class="summary-name">_abc_registry</span> = <code title="&lt;_weakrefset.WeakSet object at 0x2b8b5da012d0&gt;">&lt;_weakrefset.WeakSet object at 0x2b8b5da012d0&gt;</code>
     </td>
   </tr>
   <tr>
@@ -687,7 +687,7 @@ false if it was removed (and is now disabled).</p>
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-&lt;_weakrefset.WeakSet object at 0x2ad9e7dff890&gt;
+&lt;_weakrefset.WeakSet object at 0x2b8b5da01910&gt;
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -725,7 +725,7 @@ false if it was removed (and is now disabled).</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index be67bce3f20855fe6f7a338652ddf3cfeefaa94a..a7edcbb6354c4fbf5f4b03abcb483499e747480f 100644 (file)
@@ -263,7 +263,7 @@ keyword.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bdae2aafed8343cef8a24b75bf75cf536197ccbc..369826815c44c327c73562c26d07e082e671c01b 100644 (file)
@@ -120,7 +120,7 @@ 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 Thu Mar 17 15:04:27 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e4cc322c209ea04e565f83fb8f1a5eb43254489a..27d478c5d9406d07b2d6cf616b65045e658cde9c 100644 (file)
@@ -364,7 +364,7 @@ _abcoll.Container --+
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.html.FieldsDict-class.html#_abc_negative_cache" class="summary-name" onclick="show_private();">_abc_negative_cache</a> = <code title="&lt;_weakrefset.WeakSet object at 0x2ad9e7dffd90&gt;">&lt;_weakrefset.WeakSet object at 0x2ad9e7d<code class="variable-ellipsis">...</code></code>
+        <a href="lxml.html.FieldsDict-class.html#_abc_negative_cache" class="summary-name" onclick="show_private();">_abc_negative_cache</a> = <code title="&lt;_weakrefset.WeakSet object at 0x2b8b5da01e10&gt;">&lt;_weakrefset.WeakSet object at 0x2b8b5da<code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr class="private">
@@ -378,7 +378,7 @@ _abcoll.Container --+
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="_abc_registry"></a><span class="summary-name">_abc_registry</span> = <code title="&lt;_weakrefset.WeakSet object at 0x2ad9e7dffc50&gt;">&lt;_weakrefset.WeakSet object at 0x2ad9e7dffc50&gt;</code>
+        <a name="_abc_registry"></a><span class="summary-name">_abc_registry</span> = <code title="&lt;_weakrefset.WeakSet object at 0x2b8b5da01cd0&gt;">&lt;_weakrefset.WeakSet object at 0x2b8b5da01cd0&gt;</code>
     </td>
   </tr>
   <tr>
@@ -681,7 +681,7 @@ _abcoll.Container --+
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-&lt;_weakrefset.WeakSet object at 0x2ad9e7dffd90&gt;
+&lt;_weakrefset.WeakSet object at 0x2b8b5da01e10&gt;
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -719,7 +719,7 @@ _abcoll.Container --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f4b319f2b34c4308e451f32eb7239d63ce24fa4d..728e8a0249b027b6299f5292f172919fd0f1978d 100644 (file)
@@ -427,7 +427,7 @@ string, and defaults to <tt class="rst-docutils literal">'GET'</tt>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8af69d8d61d868c4c1baf363c4871545d1e7adff..d5683d9c425e4013f2042a4a52628d788ff523d2 100644 (file)
@@ -254,7 +254,7 @@ objects.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 68dc90bde10884e85507f440794aacd51b903570..f0fb18d6cca101aebb1d22909f1fb0b47d3d9b2d 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 694a2111f0bbe49ecf4a8e1e391ed969d4d1bd9f..27af43b74e0c7426678e415d381f4f92c79cdea1 100644 (file)
@@ -323,7 +323,7 @@ speedup.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 86e344966a74157d6714055a610826a846ac6e4f..d4aac0c2a0e78ef2d9b4466f2ba808dcd0b6dfde 100644 (file)
@@ -364,7 +364,7 @@ Element classes.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f2ad7a90b80c28c0eccd62faf0d9dcf8f8d5271c..fabd05591776419b47fdc180a337ec0945f43535 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ab520fb190981935f13d1c847c96446e0bd2b55a..fbc129728793db68a750958c806349df79c11245 100644 (file)
@@ -777,7 +777,7 @@ element to get the document's head.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a34889265aae8111ea98d6685bc94ca15c8884b4..bed3fb1269ed9955e1385520abd40bd98a92968d 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c5249a060b2408795adae6906b826170039bdb9a..e8737a7349921fbe5d3edc565b35db602843ee8a 100644 (file)
@@ -405,7 +405,7 @@ checked, this returns None.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 42ab23fd662814587f5dca0c4f13e39bd2d7a5b5..c8253c3d0eb231144f0b2a16f779e8b26e5e6fd6 100644 (file)
@@ -431,7 +431,7 @@ nput' or local-name(.) = 'textarea')]
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 73f660e6d6a12b10af1a9dff0d5c839e3a944a6d..f764aff6e3006800db848a18ca633801ca7bf2ad 100644 (file)
@@ -279,7 +279,7 @@ Mix-in for all input elements (input, select, and textarea)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2532c22c1dc3a79d0aa14bd7483b6bf557f9907c..7c059ad5daa199e85f1e22f7ef23f664c44bb4e8 100644 (file)
@@ -311,7 +311,7 @@ can't be found.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 89433e68d6848113181bf6e532c6e481ad8ec7ef..8d6d6d3614a1508dc55bae207239a16eeadc7ea1 100644 (file)
@@ -579,7 +579,7 @@ to unselect the option.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f95d1f4261ea5eda0c701d9a78cf6a4f86d11e85..fe247f02a31a342ae4b7d7d09567f53ddcf70fe0 100644 (file)
@@ -361,7 +361,7 @@ unchecks any other value).
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8043c91b4784ef8bda23c1c2fba2ed4f8ddef421..b0b5d655f59792701eb1792fcc70c0ea7e2d8330 100644 (file)
@@ -376,7 +376,7 @@ attribute of all the <tt class="rst-docutils literal">&lt;option&gt;</tt> elemen
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 663313f6bad8032780096907be3484fba6b17cf3..417a33fefa29710953d57ae543489efbc05ba6c8 100644 (file)
@@ -316,7 +316,7 @@ get/set the value with <tt class="rst-rst-rst-rst-rst-docutils literal rst-rst-r
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 42356c5c2e23482cf797f96c55281b008f733f2b..62a2f7af48363cf7c6a1bb68b01640811b57d36d 100644 (file)
@@ -266,7 +266,7 @@ parser like this:</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 713597f02c89d41fb9919f43a3c5f7ce62f872a1..d12aa282f23f554eb513386c75f2b7a5ab62fc6d 100644 (file)
@@ -253,7 +253,7 @@ of the resulting document.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9663725f645a68f2f25ee1b1ceabc4d41af351eb..5e5139ca204011c722bdeafa6f4cc3f905af1ff7 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8447d3bf6332896f5a39487a5c99b6841a696cbe..5a4ac0d79e59f0d92aff5d3cf6ba61bc5bc29960 100644 (file)
@@ -435,7 +435,7 @@ 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 Thu Mar 17 15:04:27 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b90ffb4f89b74590fc234a2d0dd9524b1713bceb..b213261c5ff4325a171c9f1fcd2f797738386537 100644 (file)
@@ -754,7 +754,7 @@ a<code class="re-op">-</code>z0<code class="re-op">-</code>9%&amp;\?;=~<code cla
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b93fb31c49e4a025b20ba0182885169e886fa048..16888f21a8f08ada5f38c9e405f36c08f8f22ccd 100644 (file)
@@ -198,1070 +198,1079 @@ lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="retu
 <a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">     <tt class="py-string">"descendant-or-self::x:a[normalize-space(@href) and substring(normalize-space(@href),1,1) != '#']"</tt><tt class="py-op">)</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">namespaces</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'x'</tt><tt class="py-op">:</tt><tt id="link-42" class="py-name"><a title="lxml.html.XHTML_NAMESPACE" class="py-name" href="#" onclick="return doclink('link-42', 'XHTML_NAMESPACE', 'link-11');">XHTML_NAMESPACE</a></tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
 <a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"> </tt>
-<a name="Cleaner"></a><div id="Cleaner-def"><a name="L98"></a><tt class="py-lineno"> 98</tt> <a class="py-toggle" href="#" id="Cleaner-toggle" onclick="return toggle('Cleaner');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html">Cleaner</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="Cleaner-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Cleaner-expanded"><a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
-<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">    Instances cleans the document of each of the possible offending</tt> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">    elements.  The cleaning is controlled by attributes; you can</tt> </tt>
-<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">    override attributes in a subclass, or set them in the constructor.</tt> </tt>
-<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring">    ``scripts``:</tt> </tt>
-<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any ``&lt;script&gt;`` tags.</tt> </tt>
-<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-docstring">    ``javascript``:</tt> </tt>
-<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any Javascript, like an ``onclick`` attribute. Also removes stylesheets</tt> </tt>
-<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-docstring">        as they could contain Javascript.</tt> </tt>
-<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-docstring">    ``comments``:</tt> </tt>
-<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any comments.</tt> </tt>
-<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-docstring">    ``style``:</tt> </tt>
-<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any style tags or attributes.</tt> </tt>
-<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring">    ``links``:</tt> </tt>
-<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any ``&lt;link&gt;`` tags</tt> </tt>
-<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring">    ``meta``:</tt> </tt>
-<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any ``&lt;meta&gt;`` tags</tt> </tt>
-<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring">    ``page_structure``:</tt> </tt>
-<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring">        Structural parts of a page: ``&lt;head&gt;``, ``&lt;html&gt;``, ``&lt;title&gt;``.</tt> </tt>
-<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-docstring">    ``processing_instructions``:</tt> </tt>
-<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any processing instructions.</tt> </tt>
-<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-docstring">    ``embedded``:</tt> </tt>
-<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any embedded objects (flash, iframes)</tt> </tt>
-<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-docstring">    ``frames``:</tt> </tt>
-<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any frame-related tags</tt> </tt>
-<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-docstring">    ``forms``:</tt> </tt>
-<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any form tags</tt> </tt>
-<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-docstring">    ``annoying_tags``:</tt> </tt>
-<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-docstring">        Tags that aren't *wrong*, but are annoying.  ``&lt;blink&gt;`` and ``&lt;marquee&gt;``</tt> </tt>
-<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-docstring">    ``remove_tags``:</tt> </tt>
-<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-docstring">        A list of tags to remove.  Only the tags will be removed,</tt> </tt>
-<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-docstring">        their content will get pulled up into the parent tag.</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"> </tt>
+<a name="Cleaner"></a><div id="Cleaner-def"><a name="L99"></a><tt class="py-lineno"> 99</tt> <a class="py-toggle" href="#" id="Cleaner-toggle" onclick="return toggle('Cleaner');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html">Cleaner</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="Cleaner-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Cleaner-expanded"><a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">    Instances cleans the document of each of the possible offending</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">    elements.  The cleaning is controlled by attributes; you can</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">    override attributes in a subclass, or set them in the constructor.</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">    ``scripts``:</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any ``&lt;script&gt;`` tags.</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-docstring">    ``javascript``:</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any Javascript, like an ``onclick`` attribute. Also removes stylesheets</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-docstring">        as they could contain Javascript.</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-docstring">    ``comments``:</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any comments.</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-docstring">    ``style``:</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any style tags.</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring">    ``inline_style``</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any style attributes.  Defaults to the value of the ``style`` option.</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring">    ``links``:</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any ``&lt;link&gt;`` tags</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring">    ``meta``:</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any ``&lt;meta&gt;`` tags</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-docstring">    ``page_structure``:</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-docstring">        Structural parts of a page: ``&lt;head&gt;``, ``&lt;html&gt;``, ``&lt;title&gt;``.</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-docstring">    ``processing_instructions``:</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any processing instructions.</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-docstring">    ``embedded``:</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any embedded objects (flash, iframes)</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-docstring">    ``frames``:</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any frame-related tags</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-docstring">    ``forms``:</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-docstring">        Removes any form tags</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-docstring">    ``annoying_tags``:</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-docstring">        Tags that aren't *wrong*, but are annoying.  ``&lt;blink&gt;`` and ``&lt;marquee&gt;``</tt> </tt>
 <a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-docstring">    ``kill_tags``:</tt> </tt>
-<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-docstring">        A list of tags to kill.  Killing also removes the tag's content,</tt> </tt>
-<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-docstring">        i.e. the whole subtree, not just the tag itself.</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-docstring">    ``remove_tags``:</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-docstring">        A list of tags to remove.  Only the tags will be removed,</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-docstring">        their content will get pulled up into the parent tag.</tt> </tt>
 <a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-docstring">    ``allow_tags``:</tt> </tt>
-<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring">        A list of tags to include (default include all).</tt> </tt>
-<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring">    ``remove_unknown_tags``:</tt> </tt>
-<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-docstring">        Remove any tags that aren't standard parts of HTML.</tt> </tt>
-<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-docstring">    ``safe_attrs_only``:</tt> </tt>
-<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-docstring">        If true, only include 'safe' attributes (specifically the list</tt> </tt>
-<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-docstring">        from the feedparser HTML sanitisation web site).</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-docstring">    ``kill_tags``:</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring">        A list of tags to kill.  Killing also removes the tag's content,</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring">        i.e. the whole subtree, not just the tag itself.</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-docstring">    ``allow_tags``:</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-docstring">        A list of tags to include (default include all).</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-docstring">    ``remove_unknown_tags``:</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-docstring">        Remove any tags that aren't standard parts of HTML.</tt> </tt>
 <a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-docstring">    ``safe_attrs``:</tt> </tt>
-<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-docstring">        A set of attribute names to override the default list of attributes</tt> </tt>
-<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-docstring">        considered 'safe' (when safe_attrs_only=True).</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-docstring">    ``safe_attrs_only``:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-docstring">        If true, only include 'safe' attributes (specifically the list</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-docstring">        from the feedparser HTML sanitisation web site).</tt> </tt>
 <a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-docstring">    ``add_nofollow``:</tt> </tt>
-<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-docstring">        If true, then any &lt;a&gt; tags will have ``rel="nofollow"`` added to them.</tt> </tt>
-<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-docstring">    ``host_whitelist``:</tt> </tt>
-<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-docstring">        A list or set of hosts that you can use for embedded content</tt> </tt>
-<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-docstring">        (for content like ``&lt;object&gt;``, ``&lt;link rel="stylesheet"&gt;``, etc).</tt> </tt>
-<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-docstring">        You can also implement/override the method</tt> </tt>
-<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-docstring">        ``allow_embedded_url(el, url)`` or ``allow_element(el)`` to</tt> </tt>
-<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-docstring">        implement more complex rules for what can be embedded.</tt> </tt>
-<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-docstring">        Anything that passes this test will be shown, regardless of</tt> </tt>
-<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-docstring">        the value of (for instance) ``embedded``.</tt> </tt>
-<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-docstring">        Note that this parameter might not work as intended if you do not</tt> </tt>
-<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-docstring">        make the links absolute before doing the cleaning.</tt> </tt>
-<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-docstring">        Note that you may also need to set ``whitelist_tags``.</tt> </tt>
-<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-docstring">    ``whitelist_tags``:</tt> </tt>
-<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-docstring">        A set of tags that can be included with ``host_whitelist``.</tt> </tt>
-<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-docstring">        The default is ``iframe`` and ``embed``; you may wish to</tt> </tt>
-<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-docstring">        include other tags like ``script``, or you may want to</tt> </tt>
-<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-docstring">        implement ``allow_embedded_url`` for more control.  Set to None to</tt> </tt>
-<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-docstring">        include all tags.</tt> </tt>
-<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-docstring">    This modifies the document *in place*.</tt> </tt>
-<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"> </tt>
-<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">    <tt id="link-43" class="py-name" targets="Variable lxml.html.clean.Cleaner.scripts=lxml.html.clean.Cleaner-class.html#scripts"><a title="lxml.html.clean.Cleaner.scripts" class="py-name" href="#" onclick="return doclink('link-43', 'scripts', 'link-43');">scripts</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">    <tt id="link-44" class="py-name" targets="Variable lxml.html.clean.Cleaner.javascript=lxml.html.clean.Cleaner-class.html#javascript"><a title="lxml.html.clean.Cleaner.javascript" class="py-name" href="#" onclick="return doclink('link-44', 'javascript', 'link-44');">javascript</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">    <tt id="link-45" class="py-name" targets="Variable lxml.html.clean.Cleaner.comments=lxml.html.clean.Cleaner-class.html#comments"><a title="lxml.html.clean.Cleaner.comments" class="py-name" href="#" onclick="return doclink('link-45', 'comments', 'link-45');">comments</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">    <tt id="link-46" class="py-name" targets="Variable lxml.html.clean.Cleaner.style=lxml.html.clean.Cleaner-class.html#style"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-46', 'style', 'link-46');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">    <tt id="link-47" class="py-name" targets="Variable lxml.html.clean.Cleaner.links=lxml.html.clean.Cleaner-class.html#links"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-47', 'links', 'link-47');">links</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">    <tt id="link-48" class="py-name" targets="Variable lxml.html.clean.Cleaner.meta=lxml.html.clean.Cleaner-class.html#meta"><a title="lxml.html.clean.Cleaner.meta" class="py-name" href="#" onclick="return doclink('link-48', 'meta', 'link-48');">meta</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">    <tt id="link-49" class="py-name" targets="Variable lxml.html.clean.Cleaner.page_structure=lxml.html.clean.Cleaner-class.html#page_structure"><a title="lxml.html.clean.Cleaner.page_structure" class="py-name" href="#" onclick="return doclink('link-49', 'page_structure', 'link-49');">page_structure</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">    <tt id="link-50" class="py-name" targets="Variable lxml.html.clean.Cleaner.processing_instructions=lxml.html.clean.Cleaner-class.html#processing_instructions"><a title="lxml.html.clean.Cleaner.processing_instructions" class="py-name" href="#" onclick="return doclink('link-50', 'processing_instructions', 'link-50');">processing_instructions</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">    <tt id="link-51" class="py-name" targets="Variable lxml.html.clean.Cleaner.embedded=lxml.html.clean.Cleaner-class.html#embedded"><a title="lxml.html.clean.Cleaner.embedded" class="py-name" href="#" onclick="return doclink('link-51', 'embedded', 'link-51');">embedded</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">    <tt id="link-52" class="py-name" targets="Variable lxml.html.clean.Cleaner.frames=lxml.html.clean.Cleaner-class.html#frames"><a title="lxml.html.clean.Cleaner.frames" class="py-name" href="#" onclick="return doclink('link-52', 'frames', 'link-52');">frames</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">    <tt id="link-53" class="py-name" targets="Variable lxml.html.HtmlMixin.forms=lxml.html.HtmlMixin-class.html#forms,Variable lxml.html.clean.Cleaner.forms=lxml.html.clean.Cleaner-class.html#forms"><a title="lxml.html.HtmlMixin.forms
-lxml.html.clean.Cleaner.forms" class="py-name" href="#" onclick="return doclink('link-53', 'forms', 'link-53');">forms</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">    <tt id="link-54" class="py-name" targets="Variable lxml.html.clean.Cleaner.annoying_tags=lxml.html.clean.Cleaner-class.html#annoying_tags"><a title="lxml.html.clean.Cleaner.annoying_tags" class="py-name" href="#" onclick="return doclink('link-54', 'annoying_tags', 'link-54');">annoying_tags</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">    <tt id="link-55" class="py-name" targets="Variable lxml.html.clean.Cleaner.remove_tags=lxml.html.clean.Cleaner-class.html#remove_tags"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-55', 'remove_tags', 'link-55');">remove_tags</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">    <tt id="link-56" class="py-name" targets="Variable lxml.html.clean.Cleaner.allow_tags=lxml.html.clean.Cleaner-class.html#allow_tags"><a title="lxml.html.clean.Cleaner.allow_tags" class="py-name" href="#" onclick="return doclink('link-56', 'allow_tags', 'link-56');">allow_tags</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">    <tt id="link-57" class="py-name" targets="Variable lxml.html.clean.Cleaner.kill_tags=lxml.html.clean.Cleaner-class.html#kill_tags"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-57', 'kill_tags', 'link-57');">kill_tags</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">    <tt id="link-58" class="py-name" targets="Variable lxml.html.clean.Cleaner.remove_unknown_tags=lxml.html.clean.Cleaner-class.html#remove_unknown_tags"><a title="lxml.html.clean.Cleaner.remove_unknown_tags" class="py-name" href="#" onclick="return doclink('link-58', 'remove_unknown_tags', 'link-58');">remove_unknown_tags</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">    <tt id="link-59" class="py-name" targets="Variable lxml.html.clean.Cleaner.safe_attrs_only=lxml.html.clean.Cleaner-class.html#safe_attrs_only"><a title="lxml.html.clean.Cleaner.safe_attrs_only" class="py-name" href="#" onclick="return doclink('link-59', 'safe_attrs_only', 'link-59');">safe_attrs_only</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">    <tt id="link-60" class="py-name" targets="Variable lxml.html.clean.Cleaner.safe_attrs=lxml.html.clean.Cleaner-class.html#safe_attrs,Variable lxml.html.defs.safe_attrs=lxml.html.defs-module.html#safe_attrs"><a title="lxml.html.clean.Cleaner.safe_attrs
-lxml.html.defs.safe_attrs" class="py-name" href="#" onclick="return doclink('link-60', 'safe_attrs', 'link-60');">safe_attrs</a></tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name"><a title="lxml.html.defs" class="py-name" href="#" onclick="return doclink('link-61', 'defs', 'link-6');">defs</a></tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="lxml.html.clean.Cleaner.safe_attrs
-lxml.html.defs.safe_attrs" class="py-name" href="#" onclick="return doclink('link-62', 'safe_attrs', 'link-60');">safe_attrs</a></tt> </tt>
-<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">    <tt id="link-63" class="py-name" targets="Variable lxml.html.clean.Cleaner.add_nofollow=lxml.html.clean.Cleaner-class.html#add_nofollow"><a title="lxml.html.clean.Cleaner.add_nofollow" class="py-name" href="#" onclick="return doclink('link-63', 'add_nofollow', 'link-63');">add_nofollow</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">    <tt id="link-64" class="py-name" targets="Variable lxml.html.clean.Cleaner.host_whitelist=lxml.html.clean.Cleaner-class.html#host_whitelist"><a title="lxml.html.clean.Cleaner.host_whitelist" class="py-name" href="#" onclick="return doclink('link-64', 'host_whitelist', 'link-64');">host_whitelist</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">    <tt id="link-65" class="py-name" targets="Variable lxml.html.clean.Cleaner.whitelist_tags=lxml.html.clean.Cleaner-class.html#whitelist_tags"><a title="lxml.html.clean.Cleaner.whitelist_tags" class="py-name" href="#" onclick="return doclink('link-65', 'whitelist_tags', 'link-65');">whitelist_tags</a></tt> <tt class="py-op">=</tt> <tt id="link-66" 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-66', 'set', 'link-66');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'iframe'</tt><tt class="py-op">,</tt> <tt class="py-string">'embed'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"> </tt>
-<a name="Cleaner.__init__"></a><div id="Cleaner.__init__-def"><a name="L212"></a><tt class="py-lineno">212</tt> <a class="py-toggle" href="#" id="Cleaner.__init__-toggle" onclick="return toggle('Cleaner.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Cleaner.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner.__init__-expanded"><a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-67" 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="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-docstring">    ``safe_attrs``:</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-docstring">        A set of attribute names to override the default list of attributes</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-docstring">        considered 'safe' (when safe_attrs_only=True).</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-docstring">    ``add_nofollow``:</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-docstring">        If true, then any &lt;a&gt; tags will have ``rel="nofollow"`` added to them.</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-docstring">    ``host_whitelist``:</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-docstring">        A list or set of hosts that you can use for embedded content</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-docstring">        (for content like ``&lt;object&gt;``, ``&lt;link rel="stylesheet"&gt;``, etc).</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-docstring">        You can also implement/override the method</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-docstring">        ``allow_embedded_url(el, url)`` or ``allow_element(el)`` to</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-docstring">        implement more complex rules for what can be embedded.</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-docstring">        Anything that passes this test will be shown, regardless of</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-docstring">        the value of (for instance) ``embedded``.</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-docstring">        Note that this parameter might not work as intended if you do not</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-docstring">        make the links absolute before doing the cleaning.</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-docstring">        Note that you may also need to set ``whitelist_tags``.</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-docstring">    ``whitelist_tags``:</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-docstring">        A set of tags that can be included with ``host_whitelist``.</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-docstring">        The default is ``iframe`` and ``embed``; you may wish to</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-docstring">        include other tags like ``script``, or you may want to</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-docstring">        implement ``allow_embedded_url`` for more control.  Set to None to</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-docstring">        include all tags.</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"><tt class="py-docstring">    This modifies the document *in place*.</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">    <tt id="link-43" class="py-name" targets="Variable lxml.html.clean.Cleaner.scripts=lxml.html.clean.Cleaner-class.html#scripts"><a title="lxml.html.clean.Cleaner.scripts" class="py-name" href="#" onclick="return doclink('link-43', 'scripts', 'link-43');">scripts</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">    <tt id="link-44" class="py-name" targets="Variable lxml.html.clean.Cleaner.javascript=lxml.html.clean.Cleaner-class.html#javascript"><a title="lxml.html.clean.Cleaner.javascript" class="py-name" href="#" onclick="return doclink('link-44', 'javascript', 'link-44');">javascript</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">    <tt id="link-45" class="py-name" targets="Variable lxml.html.clean.Cleaner.comments=lxml.html.clean.Cleaner-class.html#comments"><a title="lxml.html.clean.Cleaner.comments" class="py-name" href="#" onclick="return doclink('link-45', 'comments', 'link-45');">comments</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">    <tt id="link-46" class="py-name" targets="Variable lxml.html.clean.Cleaner.style=lxml.html.clean.Cleaner-class.html#style"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-46', 'style', 'link-46');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">    <tt id="link-47" class="py-name" targets="Variable lxml.html.clean.Cleaner.inline_style=lxml.html.clean.Cleaner-class.html#inline_style"><a title="lxml.html.clean.Cleaner.inline_style" class="py-name" href="#" onclick="return doclink('link-47', 'inline_style', 'link-47');">inline_style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">    <tt id="link-48" class="py-name" targets="Variable lxml.html.clean.Cleaner.links=lxml.html.clean.Cleaner-class.html#links"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-48', 'links', 'link-48');">links</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">    <tt id="link-49" class="py-name" targets="Variable lxml.html.clean.Cleaner.meta=lxml.html.clean.Cleaner-class.html#meta"><a title="lxml.html.clean.Cleaner.meta" class="py-name" href="#" onclick="return doclink('link-49', 'meta', 'link-49');">meta</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">    <tt id="link-50" class="py-name" targets="Variable lxml.html.clean.Cleaner.page_structure=lxml.html.clean.Cleaner-class.html#page_structure"><a title="lxml.html.clean.Cleaner.page_structure" class="py-name" href="#" onclick="return doclink('link-50', 'page_structure', 'link-50');">page_structure</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">    <tt id="link-51" class="py-name" targets="Variable lxml.html.clean.Cleaner.processing_instructions=lxml.html.clean.Cleaner-class.html#processing_instructions"><a title="lxml.html.clean.Cleaner.processing_instructions" class="py-name" href="#" onclick="return doclink('link-51', 'processing_instructions', 'link-51');">processing_instructions</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">    <tt id="link-52" class="py-name" targets="Variable lxml.html.clean.Cleaner.embedded=lxml.html.clean.Cleaner-class.html#embedded"><a title="lxml.html.clean.Cleaner.embedded" class="py-name" href="#" onclick="return doclink('link-52', 'embedded', 'link-52');">embedded</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">    <tt id="link-53" class="py-name" targets="Variable lxml.html.clean.Cleaner.frames=lxml.html.clean.Cleaner-class.html#frames"><a title="lxml.html.clean.Cleaner.frames" class="py-name" href="#" onclick="return doclink('link-53', 'frames', 'link-53');">frames</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">    <tt id="link-54" class="py-name" targets="Variable lxml.html.HtmlMixin.forms=lxml.html.HtmlMixin-class.html#forms,Variable lxml.html.clean.Cleaner.forms=lxml.html.clean.Cleaner-class.html#forms"><a title="lxml.html.HtmlMixin.forms
+lxml.html.clean.Cleaner.forms" class="py-name" href="#" onclick="return doclink('link-54', 'forms', 'link-54');">forms</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">    <tt id="link-55" class="py-name" targets="Variable lxml.html.clean.Cleaner.annoying_tags=lxml.html.clean.Cleaner-class.html#annoying_tags"><a title="lxml.html.clean.Cleaner.annoying_tags" class="py-name" href="#" onclick="return doclink('link-55', 'annoying_tags', 'link-55');">annoying_tags</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">    <tt id="link-56" class="py-name" targets="Variable lxml.html.clean.Cleaner.remove_tags=lxml.html.clean.Cleaner-class.html#remove_tags"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-56', 'remove_tags', 'link-56');">remove_tags</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">    <tt id="link-57" class="py-name" targets="Variable lxml.html.clean.Cleaner.allow_tags=lxml.html.clean.Cleaner-class.html#allow_tags"><a title="lxml.html.clean.Cleaner.allow_tags" class="py-name" href="#" onclick="return doclink('link-57', 'allow_tags', 'link-57');">allow_tags</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">    <tt id="link-58" class="py-name" targets="Variable lxml.html.clean.Cleaner.kill_tags=lxml.html.clean.Cleaner-class.html#kill_tags"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-58', 'kill_tags', 'link-58');">kill_tags</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">    <tt id="link-59" class="py-name" targets="Variable lxml.html.clean.Cleaner.remove_unknown_tags=lxml.html.clean.Cleaner-class.html#remove_unknown_tags"><a title="lxml.html.clean.Cleaner.remove_unknown_tags" class="py-name" href="#" onclick="return doclink('link-59', 'remove_unknown_tags', 'link-59');">remove_unknown_tags</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">    <tt id="link-60" class="py-name" targets="Variable lxml.html.clean.Cleaner.safe_attrs_only=lxml.html.clean.Cleaner-class.html#safe_attrs_only"><a title="lxml.html.clean.Cleaner.safe_attrs_only" class="py-name" href="#" onclick="return doclink('link-60', 'safe_attrs_only', 'link-60');">safe_attrs_only</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">    <tt id="link-61" class="py-name" targets="Variable lxml.html.clean.Cleaner.safe_attrs=lxml.html.clean.Cleaner-class.html#safe_attrs,Variable lxml.html.defs.safe_attrs=lxml.html.defs-module.html#safe_attrs"><a title="lxml.html.clean.Cleaner.safe_attrs
+lxml.html.defs.safe_attrs" class="py-name" href="#" onclick="return doclink('link-61', 'safe_attrs', 'link-61');">safe_attrs</a></tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name"><a title="lxml.html.defs" class="py-name" href="#" onclick="return doclink('link-62', 'defs', 'link-6');">defs</a></tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="lxml.html.clean.Cleaner.safe_attrs
+lxml.html.defs.safe_attrs" class="py-name" href="#" onclick="return doclink('link-63', 'safe_attrs', 'link-61');">safe_attrs</a></tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">    <tt id="link-64" class="py-name" targets="Variable lxml.html.clean.Cleaner.add_nofollow=lxml.html.clean.Cleaner-class.html#add_nofollow"><a title="lxml.html.clean.Cleaner.add_nofollow" class="py-name" href="#" onclick="return doclink('link-64', 'add_nofollow', 'link-64');">add_nofollow</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">    <tt id="link-65" class="py-name" targets="Variable lxml.html.clean.Cleaner.host_whitelist=lxml.html.clean.Cleaner-class.html#host_whitelist"><a title="lxml.html.clean.Cleaner.host_whitelist" class="py-name" href="#" onclick="return doclink('link-65', 'host_whitelist', 'link-65');">host_whitelist</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">    <tt id="link-66" class="py-name" targets="Variable lxml.html.clean.Cleaner.whitelist_tags=lxml.html.clean.Cleaner-class.html#whitelist_tags"><a title="lxml.html.clean.Cleaner.whitelist_tags" class="py-name" href="#" onclick="return doclink('link-66', 'whitelist_tags', 'link-66');">whitelist_tags</a></tt> <tt class="py-op">=</tt> <tt id="link-67" 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-67', 'set', 'link-67');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'iframe'</tt><tt class="py-op">,</tt> <tt class="py-string">'embed'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"> </tt>
+<a name="Cleaner.__init__"></a><div id="Cleaner.__init__-def"><a name="L217"></a><tt class="py-lineno">217</tt> <a class="py-toggle" href="#" id="Cleaner.__init__-toggle" onclick="return toggle('Cleaner.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Cleaner.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner.__init__-expanded"><a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-68" 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-67', 'name', 'link-67');">name</a></tt><tt class="py-op">,</tt> <tt id="link-68" 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.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-68', 'name', 'link-68');">name</a></tt><tt class="py-op">,</tt> <tt id="link-69" 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-68', 'value', 'link-68');">value</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt id="link-69" 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.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-69', 'value', 'link-69');">value</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt id="link-70" 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-69', 'items', 'link-69');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-70" 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-70', 'hasattr', 'link-70');">hasattr</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-71" class="py-name"><a title="lxml.etree.DTD.name
+lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-70', 'items', 'link-70');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-71" 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-71', 'hasattr', 'link-71');">hasattr</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-72" 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-71', 'name', 'link-67');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt> </tt>
-<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">                    <tt class="py-string">"Unknown parameter: %s=%r"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-72" class="py-name"><a title="lxml.etree.DTD.name
+lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-72', 'name', 'link-68');">name</a></tt><tt class="py-op">)</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">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">                    <tt class="py-string">"Unknown parameter: %s=%r"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-73" 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-72', 'name', 'link-67');">name</a></tt><tt class="py-op">,</tt> <tt id="link-73" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-73', 'name', 'link-68');">name</a></tt><tt class="py-op">,</tt> <tt id="link-74" 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-73', 'value', 'link-68');">value</a></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 id="link-74" class="py-name" targets="Method lxml.objectify.ObjectPath.setattr()=lxml.objectify.ObjectPath-class.html#setattr"><a title="lxml.objectify.ObjectPath.setattr" class="py-name" href="#" onclick="return doclink('link-74', 'setattr', 'link-74');">setattr</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-75" class="py-name"><a title="lxml.etree.DTD.name
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-74', 'value', 'link-69');">value</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 id="link-75" class="py-name" targets="Method lxml.objectify.ObjectPath.setattr()=lxml.objectify.ObjectPath-class.html#setattr"><a title="lxml.objectify.ObjectPath.setattr" class="py-name" href="#" onclick="return doclink('link-75', 'setattr', 'link-75');">setattr</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-76" 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-75', 'name', 'link-67');">name</a></tt><tt class="py-op">,</tt> <tt id="link-76" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-76', 'name', 'link-68');">name</a></tt><tt class="py-op">,</tt> <tt id="link-77" 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-76', 'value', 'link-68');">value</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="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">    <tt class="py-comment"># Used to lookup the primary URL for a given tag that is up for</tt> </tt>
-<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">    <tt class="py-comment"># removal:</tt> </tt>
-<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">    <tt id="link-77" class="py-name" targets="Variable lxml.html.clean.Cleaner._tag_link_attrs=lxml.html.clean.Cleaner-class.html#_tag_link_attrs"><a title="lxml.html.clean.Cleaner._tag_link_attrs" class="py-name" href="#" onclick="return doclink('link-77', '_tag_link_attrs', 'link-77');">_tag_link_attrs</a></tt> <tt class="py-op">=</tt> <tt class="py-name">dict</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">script</tt><tt class="py-op">=</tt><tt class="py-string">'src'</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">link</tt><tt class="py-op">=</tt><tt class="py-string">'href'</tt><tt class="py-op">,</tt> </tt>
-<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">        <tt class="py-comment"># From: http://java.sun.com/j2se/1.4.2/docs/guide/misc/applet.html</tt> </tt>
-<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">        <tt class="py-comment"># From what I can tell, both attributes can contain a link:</tt> </tt>
-<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">        <tt class="py-name">applet</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-string">'code'</tt><tt class="py-op">,</tt> <tt class="py-string">'object'</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">iframe</tt><tt class="py-op">=</tt><tt class="py-string">'src'</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">embed</tt><tt class="py-op">=</tt><tt class="py-string">'src'</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">layer</tt><tt class="py-op">=</tt><tt class="py-string">'src'</tt><tt class="py-op">,</tt> </tt>
-<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">        <tt class="py-comment"># FIXME: there doesn't really seem like a general way to figure out what</tt> </tt>
-<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">        <tt class="py-comment"># links an &lt;object&gt; tag uses; links often go in &lt;param&gt; tags with values</tt> </tt>
-<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">        <tt class="py-comment"># that we don't really know.  You'd have to have knowledge about specific</tt> </tt>
-<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">        <tt class="py-comment"># kinds of plugins (probably keyed off classid), and match against those.</tt> </tt>
-<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">        <tt class="py-comment">##object=?,</tt> </tt>
-<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">        <tt class="py-comment"># FIXME: not looking at the action currently, because it is more complex</tt> </tt>
-<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">        <tt class="py-comment"># than than -- if you keep the form, you should keep the form controls.</tt> </tt>
-<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">        <tt class="py-comment">##form='action',</tt> </tt>
-<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">=</tt><tt class="py-string">'href'</tt><tt class="py-op">,</tt> </tt>
-<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
-<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"> </tt>
-<a name="Cleaner.__call__"></a><div id="Cleaner.__call__-def"><a name="L241"></a><tt class="py-lineno">241</tt> <a class="py-toggle" href="#" id="Cleaner.__call__-toggle" onclick="return toggle('Cleaner.__call__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#__call__">__call__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">doc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Cleaner.__call__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner.__call__-expanded"><a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
-<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line"><tt class="py-docstring">        Cleans the document.</tt> </tt>
-<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
-<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-78" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-78', 'hasattr', 'link-70');">hasattr</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-string">'getroot'</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-comment"># ElementTree instance, instead of an element</tt> </tt>
-<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">            <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-79" 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-79', 'getroot', 'link-79');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">        <tt class="py-comment"># convert XHTML to HTML</tt> </tt>
-<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">        <tt class="py-name">xhtml_to_html</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
-<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">        <tt class="py-comment"># Normalize a case that IE treats &lt;image&gt; like &lt;img&gt;, and that</tt> </tt>
-<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">        <tt class="py-comment"># can confuse either this step or later steps.</tt> </tt>
-<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Method lxml.etree._Element.iter()=lxml.etree._Element-class.html#iter,Method lxml.etree._ElementTree.iter()=lxml.etree._ElementTree-class.html#iter"><a title="lxml.etree._Element.iter
-lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-80', 'iter', 'link-80');">iter</a></tt><tt class="py-op">(</tt><tt class="py-string">'image'</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">el</tt><tt class="py-op">.</tt><tt id="link-81" 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.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-77', 'value', 'link-69');">value</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-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="lxml.html.clean.Cleaner.inline_style" class="py-name" href="#" onclick="return doclink('link-78', 'inline_style', 'link-47');">inline_style</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'inline_style'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kw</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">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="lxml.html.clean.Cleaner.inline_style" class="py-name" href="#" onclick="return doclink('link-79', 'inline_style', 'link-47');">inline_style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-80', 'style', 'link-46');">style</a></tt> </tt>
+</div><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-comment"># Used to lookup the primary URL for a given tag that is up for</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">    <tt class="py-comment"># removal:</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">    <tt id="link-81" class="py-name" targets="Variable lxml.html.clean.Cleaner._tag_link_attrs=lxml.html.clean.Cleaner-class.html#_tag_link_attrs"><a title="lxml.html.clean.Cleaner._tag_link_attrs" class="py-name" href="#" onclick="return doclink('link-81', '_tag_link_attrs', 'link-81');">_tag_link_attrs</a></tt> <tt class="py-op">=</tt> <tt class="py-name">dict</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">script</tt><tt class="py-op">=</tt><tt class="py-string">'src'</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">link</tt><tt class="py-op">=</tt><tt class="py-string">'href'</tt><tt class="py-op">,</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">        <tt class="py-comment"># From: http://java.sun.com/j2se/1.4.2/docs/guide/misc/applet.html</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">        <tt class="py-comment"># From what I can tell, both attributes can contain a link:</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">        <tt class="py-name">applet</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-string">'code'</tt><tt class="py-op">,</tt> <tt class="py-string">'object'</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 class="py-name">iframe</tt><tt class="py-op">=</tt><tt class="py-string">'src'</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">embed</tt><tt class="py-op">=</tt><tt class="py-string">'src'</tt><tt class="py-op">,</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">        <tt class="py-name">layer</tt><tt class="py-op">=</tt><tt class="py-string">'src'</tt><tt class="py-op">,</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">        <tt class="py-comment"># FIXME: there doesn't really seem like a general way to figure out what</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">        <tt class="py-comment"># links an &lt;object&gt; tag uses; links often go in &lt;param&gt; tags with values</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">        <tt class="py-comment"># that we don't really know.  You'd have to have knowledge about specific</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">        <tt class="py-comment"># kinds of plugins (probably keyed off classid), and match against those.</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">        <tt class="py-comment">##object=?,</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">        <tt class="py-comment"># FIXME: not looking at the action currently, because it is more complex</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">        <tt class="py-comment"># than than -- if you keep the form, you should keep the form controls.</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">        <tt class="py-comment">##form='action',</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">=</tt><tt class="py-string">'href'</tt><tt class="py-op">,</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"> </tt>
+<a name="Cleaner.__call__"></a><div id="Cleaner.__call__-def"><a name="L248"></a><tt class="py-lineno">248</tt> <a class="py-toggle" href="#" id="Cleaner.__call__-toggle" onclick="return toggle('Cleaner.__call__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#__call__">__call__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">doc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Cleaner.__call__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner.__call__-expanded"><a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"><tt class="py-docstring">        Cleans the document.</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-82" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-82', 'hasattr', 'link-71');">hasattr</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-string">'getroot'</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-comment"># ElementTree instance, instead of an element</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line">            <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-83" 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-83', 'getroot', 'link-83');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">        <tt class="py-comment"># convert XHTML to HTML</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">        <tt class="py-name">xhtml_to_html</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">        <tt class="py-comment"># Normalize a case that IE treats &lt;image&gt; like &lt;img&gt;, and that</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">        <tt class="py-comment"># can confuse either this step or later steps.</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name" targets="Method lxml.etree._Element.iter()=lxml.etree._Element-class.html#iter,Method lxml.etree._ElementTree.iter()=lxml.etree._ElementTree-class.html#iter"><a title="lxml.etree._Element.iter
+lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-84', 'iter', 'link-84');">iter</a></tt><tt class="py-op">(</tt><tt class="py-string">'image'</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-name">el</tt><tt class="py-op">.</tt><tt id="link-85" 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-81', 'tag', 'link-81');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'img'</tt> </tt>
-<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="lxml.html.clean.Cleaner.comments" class="py-name" href="#" onclick="return doclink('link-82', 'comments', 'link-45');">comments</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">            <tt class="py-comment"># Of course, if we were going to kill comments anyway, we don't</tt> </tt>
-<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">            <tt class="py-comment"># need to worry about this</tt> </tt>
-<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name" targets="Method lxml.html.clean.Cleaner.kill_conditional_comments()=lxml.html.clean.Cleaner-class.html#kill_conditional_comments"><a title="lxml.html.clean.Cleaner.kill_conditional_comments" class="py-name" href="#" onclick="return doclink('link-83', 'kill_conditional_comments', 'link-83');">kill_conditional_comments</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
-<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line"> </tt>
-<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">        <tt id="link-84" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-84', 'kill_tags', 'link-57');">kill_tags</a></tt> <tt class="py-op">=</tt> <tt id="link-85" class="py-name"><a title="lxml.etree._Element.set
-lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-85', 'set', 'link-66');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-86', 'kill_tags', 'link-57');">kill_tags</a></tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</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 id="link-87" class="py-name"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-87', 'remove_tags', 'link-55');">remove_tags</a></tt> <tt class="py-op">=</tt> <tt id="link-88" class="py-name"><a title="lxml.etree._Element.set
-lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-88', 'set', 'link-66');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-89', 'remove_tags', 'link-55');">remove_tags</a></tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line">        <tt id="link-90" class="py-name"><a title="lxml.html.clean.Cleaner.allow_tags" class="py-name" href="#" onclick="return doclink('link-90', 'allow_tags', 'link-56');">allow_tags</a></tt> <tt class="py-op">=</tt> <tt id="link-91" class="py-name"><a title="lxml.etree._Element.set
-lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-91', 'set', 'link-66');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="lxml.html.clean.Cleaner.allow_tags" class="py-name" href="#" onclick="return doclink('link-92', 'allow_tags', 'link-56');">allow_tags</a></tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"> </tt>
-<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="lxml.html.clean.Cleaner.scripts" class="py-name" href="#" onclick="return doclink('link-93', 'scripts', 'link-43');">scripts</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-94" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-94', 'kill_tags', 'link-57');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-95" class="py-name" targets="Method lxml.html.CheckboxValues.add()=lxml.html.CheckboxValues-class.html#add,Method lxml.html.Classes.add()=lxml.html.Classes-class.html#add,Method lxml.html.MultipleSelectOptions.add()=lxml.html.MultipleSelectOptions-class.html#add"><a title="lxml.html.CheckboxValues.add
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-85', 'tag', 'link-85');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'img'</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="lxml.html.clean.Cleaner.comments" class="py-name" href="#" onclick="return doclink('link-86', 'comments', 'link-45');">comments</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line">            <tt class="py-comment"># Of course, if we were going to kill comments anyway, we don't</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">            <tt class="py-comment"># need to worry about this</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name" targets="Method lxml.html.clean.Cleaner.kill_conditional_comments()=lxml.html.clean.Cleaner-class.html#kill_conditional_comments"><a title="lxml.html.clean.Cleaner.kill_conditional_comments" class="py-name" href="#" onclick="return doclink('link-87', 'kill_conditional_comments', 'link-87');">kill_conditional_comments</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">        <tt id="link-88" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-88', 'kill_tags', 'link-58');">kill_tags</a></tt> <tt class="py-op">=</tt> <tt id="link-89" class="py-name"><a title="lxml.etree._Element.set
+lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-89', 'set', 'link-67');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-90', 'kill_tags', 'link-58');">kill_tags</a></tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">        <tt id="link-91" class="py-name"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-91', 'remove_tags', 'link-56');">remove_tags</a></tt> <tt class="py-op">=</tt> <tt id="link-92" class="py-name"><a title="lxml.etree._Element.set
+lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-92', 'set', 'link-67');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-93', 'remove_tags', 'link-56');">remove_tags</a></tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">        <tt id="link-94" class="py-name"><a title="lxml.html.clean.Cleaner.allow_tags" class="py-name" href="#" onclick="return doclink('link-94', 'allow_tags', 'link-57');">allow_tags</a></tt> <tt class="py-op">=</tt> <tt id="link-95" class="py-name"><a title="lxml.etree._Element.set
+lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-95', 'set', 'link-67');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="lxml.html.clean.Cleaner.allow_tags" class="py-name" href="#" onclick="return doclink('link-96', 'allow_tags', 'link-57');">allow_tags</a></tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="lxml.html.clean.Cleaner.scripts" class="py-name" href="#" onclick="return doclink('link-97', 'scripts', 'link-43');">scripts</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line">            <tt id="link-98" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-98', 'kill_tags', 'link-58');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-99" class="py-name" targets="Method lxml.html.CheckboxValues.add()=lxml.html.CheckboxValues-class.html#add,Method lxml.html.Classes.add()=lxml.html.Classes-class.html#add,Method lxml.html.MultipleSelectOptions.add()=lxml.html.MultipleSelectOptions-class.html#add"><a title="lxml.html.CheckboxValues.add
 lxml.html.Classes.add
-lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-95', 'add', 'link-95');">add</a></tt><tt class="py-op">(</tt><tt class="py-string">'script'</tt><tt class="py-op">)</tt> </tt>
-<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="lxml.html.clean.Cleaner.safe_attrs_only" class="py-name" href="#" onclick="return doclink('link-96', 'safe_attrs_only', 'link-59');">safe_attrs_only</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">            <tt id="link-97" class="py-name"><a title="lxml.html.clean.Cleaner.safe_attrs
-lxml.html.defs.safe_attrs" class="py-name" href="#" onclick="return doclink('link-97', 'safe_attrs', 'link-60');">safe_attrs</a></tt> <tt class="py-op">=</tt> <tt id="link-98" class="py-name"><a title="lxml.etree._Element.set
-lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-98', 'set', 'link-66');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="lxml.html.clean.Cleaner.safe_attrs
-lxml.html.defs.safe_attrs" class="py-name" href="#" onclick="return doclink('link-99', 'safe_attrs', 'link-60');">safe_attrs</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="lxml.etree._Element.iter
-lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-100', 'iter', 'link-80');">iter</a></tt><tt class="py-op">(</tt><tt id="link-101" class="py-name"><a title="lxml.etree
+lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-99', 'add', 'link-99');">add</a></tt><tt class="py-op">(</tt><tt class="py-string">'script'</tt><tt class="py-op">)</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="lxml.html.clean.Cleaner.safe_attrs_only" class="py-name" href="#" onclick="return doclink('link-100', 'safe_attrs_only', 'link-60');">safe_attrs_only</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">            <tt id="link-101" class="py-name"><a title="lxml.html.clean.Cleaner.safe_attrs
+lxml.html.defs.safe_attrs" class="py-name" href="#" onclick="return doclink('link-101', 'safe_attrs', 'link-61');">safe_attrs</a></tt> <tt class="py-op">=</tt> <tt id="link-102" class="py-name"><a title="lxml.etree._Element.set
+lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-102', 'set', 'link-67');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="lxml.html.clean.Cleaner.safe_attrs
+lxml.html.defs.safe_attrs" class="py-name" href="#" onclick="return doclink('link-103', 'safe_attrs', 'link-61');">safe_attrs</a></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">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="lxml.etree._Element.iter
+lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-104', 'iter', 'link-84');">iter</a></tt><tt class="py-op">(</tt><tt id="link-105" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-101', 'etree', 'link-3');">etree</a></tt><tt class="py-op">.</tt><tt id="link-102" 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-105', 'etree', 'link-3');">etree</a></tt><tt class="py-op">.</tt><tt id="link-106" 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-102', 'Element', 'link-102');">Element</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">                <tt id="link-103" 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,Function lxml.tests.selftest2.attrib()=lxml.tests.selftest2-module.html#attrib,Variable xml.etree.ElementTree.Element.attrib=xml.etree.ElementTree.Element-class.html#attrib"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-106', 'Element', 'link-106');">Element</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">                <tt id="link-107" 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,Function lxml.tests.selftest2.attrib()=lxml.tests.selftest2-module.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
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-103', 'attrib', 'link-103');">attrib</a></tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-107', 'attrib', 'link-107');">attrib</a></tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-104', 'attrib', 'link-103');">attrib</a></tt> </tt>
-<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">aname</tt> <tt class="py-keyword">in</tt> <tt id="link-105" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-108', 'attrib', 'link-107');">attrib</a></tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">aname</tt> <tt class="py-keyword">in</tt> <tt id="link-109" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-105', 'attrib', 'link-103');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-106" class="py-name" targets="Method lxml.etree._Attrib.keys()=lxml.etree._Attrib-class.html#keys,Method lxml.etree._Element.keys()=lxml.etree._Element-class.html#keys,Method lxml.etree._IDDict.keys()=lxml.etree._IDDict-class.html#keys,Method lxml.html.FieldsDict.keys()=lxml.html.FieldsDict-class.html#keys,Method lxml.html.InputGetter.keys()=lxml.html.InputGetter-class.html#keys"><a title="lxml.etree._Attrib.keys
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-109', 'attrib', 'link-107');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-110" class="py-name" targets="Method lxml.etree._Attrib.keys()=lxml.etree._Attrib-class.html#keys,Method lxml.etree._Element.keys()=lxml.etree._Element-class.html#keys,Method lxml.etree._IDDict.keys()=lxml.etree._IDDict-class.html#keys,Method lxml.html.FieldsDict.keys()=lxml.html.FieldsDict-class.html#keys,Method lxml.html.InputGetter.keys()=lxml.html.InputGetter-class.html#keys"><a title="lxml.etree._Attrib.keys
 lxml.etree._Element.keys
 lxml.etree._IDDict.keys
 lxml.html.FieldsDict.keys
-lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-106', 'keys', 'link-106');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">aname</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-107" class="py-name"><a title="lxml.html.clean.Cleaner.safe_attrs
-lxml.html.defs.safe_attrs" class="py-name" href="#" onclick="return doclink('link-107', 'safe_attrs', 'link-60');">safe_attrs</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line">                        <tt class="py-keyword">del</tt> <tt id="link-108" class="py-name"><a title="lxml.etree._Element.attrib
+lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-110', 'keys', 'link-110');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</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">if</tt> <tt class="py-name">aname</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-111" class="py-name"><a title="lxml.html.clean.Cleaner.safe_attrs
+lxml.html.defs.safe_attrs" class="py-name" href="#" onclick="return doclink('link-111', 'safe_attrs', 'link-61');">safe_attrs</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">                        <tt class="py-keyword">del</tt> <tt id="link-112" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-108', 'attrib', 'link-103');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-name">aname</tt><tt class="py-op">]</tt> </tt>
-<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="lxml.html.clean.Cleaner.javascript" class="py-name" href="#" onclick="return doclink('link-109', 'javascript', 'link-44');">javascript</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-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="lxml.html.clean.Cleaner.safe_attrs_only" class="py-name" href="#" onclick="return doclink('link-110', 'safe_attrs_only', 'link-59');">safe_attrs_only</a></tt> <tt class="py-keyword">and</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 id="link-111" class="py-name"><a title="lxml.html.clean.Cleaner.safe_attrs
-lxml.html.defs.safe_attrs" class="py-name" href="#" onclick="return doclink('link-111', 'safe_attrs', 'link-60');">safe_attrs</a></tt> <tt class="py-op">==</tt> <tt id="link-112" class="py-name"><a title="lxml.html.defs" class="py-name" href="#" onclick="return doclink('link-112', 'defs', 'link-6');">defs</a></tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="lxml.html.clean.Cleaner.safe_attrs
-lxml.html.defs.safe_attrs" class="py-name" href="#" onclick="return doclink('link-113', 'safe_attrs', 'link-60');">safe_attrs</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">                <tt class="py-comment"># safe_attrs handles events attributes itself</tt> </tt>
-<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="lxml.etree._Element.iter
-lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-114', 'iter', 'link-80');">iter</a></tt><tt class="py-op">(</tt><tt id="link-115" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-112', 'attrib', 'link-107');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-name">aname</tt><tt class="py-op">]</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="lxml.html.clean.Cleaner.javascript" class="py-name" href="#" onclick="return doclink('link-113', 'javascript', 'link-44');">javascript</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</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.html.clean.Cleaner.safe_attrs_only" class="py-name" href="#" onclick="return doclink('link-114', 'safe_attrs_only', 'link-60');">safe_attrs_only</a></tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="lxml.html.clean.Cleaner.safe_attrs
+lxml.html.defs.safe_attrs" class="py-name" href="#" onclick="return doclink('link-115', 'safe_attrs', 'link-61');">safe_attrs</a></tt> <tt class="py-op">==</tt> <tt id="link-116" class="py-name"><a title="lxml.html.defs" class="py-name" href="#" onclick="return doclink('link-116', 'defs', 'link-6');">defs</a></tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="lxml.html.clean.Cleaner.safe_attrs
+lxml.html.defs.safe_attrs" class="py-name" href="#" onclick="return doclink('link-117', 'safe_attrs', 'link-61');">safe_attrs</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">                <tt class="py-comment"># safe_attrs handles events attributes itself</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="lxml.etree._Element.iter
+lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-118', 'iter', 'link-84');">iter</a></tt><tt class="py-op">(</tt><tt id="link-119" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-115', 'etree', 'link-3');">etree</a></tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-119', 'etree', 'link-3');">etree</a></tt><tt class="py-op">.</tt><tt id="link-120" 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-116', 'Element', 'link-102');">Element</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">                    <tt id="link-117" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-120', 'Element', 'link-106');">Element</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">                    <tt id="link-121" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-117', 'attrib', 'link-103');">attrib</a></tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-121', 'attrib', 'link-107');">attrib</a></tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-118', 'attrib', 'link-103');">attrib</a></tt> </tt>
-<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">aname</tt> <tt class="py-keyword">in</tt> <tt id="link-119" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-122', 'attrib', 'link-107');">attrib</a></tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">aname</tt> <tt class="py-keyword">in</tt> <tt id="link-123" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-119', 'attrib', 'link-103');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="lxml.etree._Attrib.keys
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-123', 'attrib', 'link-107');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="lxml.etree._Attrib.keys
 lxml.etree._Element.keys
 lxml.etree._IDDict.keys
 lxml.html.FieldsDict.keys
-lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-120', 'keys', 'link-106');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">aname</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'on'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">                            <tt class="py-keyword">del</tt> <tt id="link-121" class="py-name"><a title="lxml.etree._Element.attrib
+lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-124', 'keys', 'link-110');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">aname</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'on'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">                            <tt class="py-keyword">del</tt> <tt id="link-125" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-121', 'attrib', 'link-103');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-name">aname</tt><tt class="py-op">]</tt> </tt>
-<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">            <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name" targets="Method lxml.html.HtmlMixin.rewrite_links()=lxml.html.HtmlMixin-class.html#rewrite_links,Variable lxml.html.rewrite_links=lxml.html-module.html#rewrite_links"><a title="lxml.html.HtmlMixin.rewrite_links
-lxml.html.rewrite_links" class="py-name" href="#" onclick="return doclink('link-122', 'rewrite_links', 'link-122');">rewrite_links</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" targets="Method lxml.html.clean.Cleaner._remove_javascript_link()=lxml.html.clean.Cleaner-class.html#_remove_javascript_link"><a title="lxml.html.clean.Cleaner._remove_javascript_link" class="py-name" href="#" onclick="return doclink('link-123', '_remove_javascript_link', 'link-123');">_remove_javascript_link</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-124" class="py-name" targets="Method lxml.html.HtmlMixin.resolve_base_href()=lxml.html.HtmlMixin-class.html#resolve_base_href,Variable lxml.html.resolve_base_href=lxml.html-module.html#resolve_base_href"><a title="lxml.html.HtmlMixin.resolve_base_href
-lxml.html.resolve_base_href" class="py-name" href="#" onclick="return doclink('link-124', 'resolve_base_href', 'link-124');">resolve_base_href</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-125', 'style', 'link-46');">style</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">                <tt class="py-comment"># If we're deleting style then we don't have to remove JS links</tt> </tt>
-<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">                <tt class="py-comment"># from styles, otherwise...</tt> </tt>
-<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-126" class="py-name"><a title="lxml.html.clean._find_styled_elements" class="py-name" href="#" onclick="return doclink('link-126', '_find_styled_elements', 'link-36');">_find_styled_elements</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">                    <tt class="py-name">old</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-127" 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.attrib" class="py-name" href="#" onclick="return doclink('link-125', 'attrib', 'link-107');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-name">aname</tt><tt class="py-op">]</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">            <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name" targets="Method lxml.html.HtmlMixin.rewrite_links()=lxml.html.HtmlMixin-class.html#rewrite_links,Variable lxml.html.rewrite_links=lxml.html-module.html#rewrite_links"><a title="lxml.html.HtmlMixin.rewrite_links
+lxml.html.rewrite_links" class="py-name" href="#" onclick="return doclink('link-126', 'rewrite_links', 'link-126');">rewrite_links</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name" targets="Method lxml.html.clean.Cleaner._remove_javascript_link()=lxml.html.clean.Cleaner-class.html#_remove_javascript_link"><a title="lxml.html.clean.Cleaner._remove_javascript_link" class="py-name" href="#" onclick="return doclink('link-127', '_remove_javascript_link', 'link-127');">_remove_javascript_link</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line">                              <tt id="link-128" class="py-name" targets="Method lxml.html.HtmlMixin.resolve_base_href()=lxml.html.HtmlMixin-class.html#resolve_base_href,Variable lxml.html.resolve_base_href=lxml.html-module.html#resolve_base_href"><a title="lxml.html.HtmlMixin.resolve_base_href
+lxml.html.resolve_base_href" class="py-name" href="#" onclick="return doclink('link-128', 'resolve_base_href', 'link-128');">resolve_base_href</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line">            <tt class="py-comment"># If we're deleting style then we don't have to remove JS links</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">            <tt class="py-comment"># from styles, otherwise...</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="lxml.html.clean.Cleaner.inline_style" class="py-name" href="#" onclick="return doclink('link-129', 'inline_style', 'link-47');">inline_style</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-130" class="py-name"><a title="lxml.html.clean._find_styled_elements" class="py-name" href="#" onclick="return doclink('link-130', '_find_styled_elements', 'link-36');">_find_styled_elements</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">                    <tt class="py-name">old</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-131" 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-127', 'get', 'link-127');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'style'</tt><tt class="py-op">)</tt> </tt>
-<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">                    <tt class="py-name">new</tt> <tt class="py-op">=</tt> <tt id="link-128" class="py-name"><a title="lxml.html.clean._css_javascript_re" class="py-name" href="#" onclick="return doclink('link-128', '_css_javascript_re', 'link-21');">_css_javascript_re</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">old</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">new</tt> <tt class="py-op">=</tt> <tt id="link-129" class="py-name"><a title="lxml.html.clean._css_import_re" class="py-name" href="#" onclick="return doclink('link-129', '_css_import_re', 'link-24');">_css_import_re</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">new</tt><tt class="py-op">)</tt> </tt>
-<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name" targets="Method lxml.html.clean.Cleaner._has_sneaky_javascript()=lxml.html.clean.Cleaner-class.html#_has_sneaky_javascript"><a title="lxml.html.clean.Cleaner._has_sneaky_javascript" class="py-name" href="#" onclick="return doclink('link-130', '_has_sneaky_javascript', 'link-130');">_has_sneaky_javascript</a></tt><tt class="py-op">(</tt><tt class="py-name">new</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">                        <tt class="py-comment"># Something tricky is going on...</tt> </tt>
-<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line">                        <tt class="py-keyword">del</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="lxml.etree._Element.attrib
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-131', 'get', 'link-131');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'style'</tt><tt class="py-op">)</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">                    <tt class="py-name">new</tt> <tt class="py-op">=</tt> <tt id="link-132" class="py-name"><a title="lxml.html.clean._css_javascript_re" class="py-name" href="#" onclick="return doclink('link-132', '_css_javascript_re', 'link-21');">_css_javascript_re</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">old</tt><tt class="py-op">)</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">                    <tt class="py-name">new</tt> <tt class="py-op">=</tt> <tt id="link-133" class="py-name"><a title="lxml.html.clean._css_import_re" class="py-name" href="#" onclick="return doclink('link-133', '_css_import_re', 'link-24');">_css_import_re</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">new</tt><tt class="py-op">)</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name" targets="Method lxml.html.clean.Cleaner._has_sneaky_javascript()=lxml.html.clean.Cleaner-class.html#_has_sneaky_javascript"><a title="lxml.html.clean.Cleaner._has_sneaky_javascript" class="py-name" href="#" onclick="return doclink('link-134', '_has_sneaky_javascript', 'link-134');">_has_sneaky_javascript</a></tt><tt class="py-op">(</tt><tt class="py-name">new</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">                        <tt class="py-comment"># Something tricky is going on...</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">                        <tt class="py-keyword">del</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-131', 'attrib', 'link-103');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'style'</tt><tt class="py-op">]</tt> </tt>
-<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">new</tt> <tt class="py-op">!=</tt> <tt class="py-name">old</tt><tt class="py-op">:</tt> </tt>
-<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">                        <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="lxml.etree._Element.set
-lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-132', 'set', 'link-66');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'style'</tt><tt class="py-op">,</tt> <tt class="py-name">new</tt><tt class="py-op">)</tt> </tt>
-<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="lxml.etree._Element.iter
-lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-133', 'iter', 'link-80');">iter</a></tt><tt class="py-op">(</tt><tt class="py-string">'style'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-135', 'attrib', 'link-107');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'style'</tt><tt class="py-op">]</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">new</tt> <tt class="py-op">!=</tt> <tt class="py-name">old</tt><tt class="py-op">:</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line">                        <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="lxml.etree._Element.set
+lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-136', 'set', 'link-67');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'style'</tt><tt class="py-op">,</tt> <tt class="py-name">new</tt><tt class="py-op">)</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-137', 'style', 'link-46');">style</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="lxml.etree._Element.iter
+lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-138', 'iter', 'link-84');">iter</a></tt><tt class="py-op">(</tt><tt class="py-string">'style'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-139" 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-134', 'get', 'link-127');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-135" 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-135', 'strip', 'link-135');">strip</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'text/javascript'</tt><tt class="py-op">:</tt> </tt>
-<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">                        <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name" targets="Method lxml.html.HtmlMixin.drop_tree()=lxml.html.HtmlMixin-class.html#drop_tree"><a title="lxml.html.HtmlMixin.drop_tree" class="py-name" href="#" onclick="return doclink('link-136', 'drop_tree', 'link-136');">drop_tree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">                        <tt class="py-keyword">continue</tt> </tt>
-<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">                    <tt class="py-name">old</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-137" 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._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-139', 'get', 'link-131');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-140" 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-140', 'strip', 'link-140');">strip</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'text/javascript'</tt><tt class="py-op">:</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line">                        <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name" targets="Method lxml.html.HtmlMixin.drop_tree()=lxml.html.HtmlMixin-class.html#drop_tree"><a title="lxml.html.HtmlMixin.drop_tree" class="py-name" href="#" onclick="return doclink('link-141', 'drop_tree', 'link-141');">drop_tree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">                        <tt class="py-keyword">continue</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">                    <tt class="py-name">old</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-142" 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-137', 'text', 'link-137');">text</a></tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt> </tt>
-<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">                    <tt class="py-name">new</tt> <tt class="py-op">=</tt> <tt id="link-138" class="py-name"><a title="lxml.html.clean._css_javascript_re" class="py-name" href="#" onclick="return doclink('link-138', '_css_javascript_re', 'link-21');">_css_javascript_re</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">old</tt><tt class="py-op">)</tt> </tt>
-<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line">                    <tt class="py-comment"># The imported CSS can do anything; we just can't allow:</tt> </tt>
-<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line">                    <tt class="py-name">new</tt> <tt class="py-op">=</tt> <tt id="link-139" class="py-name"><a title="lxml.html.clean._css_import_re" class="py-name" href="#" onclick="return doclink('link-139', '_css_import_re', 'link-24');">_css_import_re</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">old</tt><tt class="py-op">)</tt> </tt>
-<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="lxml.html.clean.Cleaner._has_sneaky_javascript" class="py-name" href="#" onclick="return doclink('link-140', '_has_sneaky_javascript', 'link-130');">_has_sneaky_javascript</a></tt><tt class="py-op">(</tt><tt class="py-name">new</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">                        <tt class="py-comment"># Something tricky is going on...</tt> </tt>
-<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line">                        <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-142', 'text', 'link-142');">text</a></tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">                    <tt class="py-name">new</tt> <tt class="py-op">=</tt> <tt id="link-143" class="py-name"><a title="lxml.html.clean._css_javascript_re" class="py-name" href="#" onclick="return doclink('link-143', '_css_javascript_re', 'link-21');">_css_javascript_re</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">old</tt><tt class="py-op">)</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">                    <tt class="py-comment"># The imported CSS can do anything; we just can't allow:</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line">                    <tt class="py-name">new</tt> <tt class="py-op">=</tt> <tt id="link-144" class="py-name"><a title="lxml.html.clean._css_import_re" class="py-name" href="#" onclick="return doclink('link-144', '_css_import_re', 'link-24');">_css_import_re</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">old</tt><tt class="py-op">)</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="lxml.html.clean.Cleaner._has_sneaky_javascript" class="py-name" href="#" onclick="return doclink('link-145', '_has_sneaky_javascript', 'link-134');">_has_sneaky_javascript</a></tt><tt class="py-op">(</tt><tt class="py-name">new</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">                        <tt class="py-comment"># Something tricky is going on...</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line">                        <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-146" 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-141', 'text', 'link-137');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'/* deleted */'</tt> </tt>
-<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">new</tt> <tt class="py-op">!=</tt> <tt class="py-name">old</tt><tt class="py-op">:</tt> </tt>
-<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">                        <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-146', 'text', 'link-142');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'/* deleted */'</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">new</tt> <tt class="py-op">!=</tt> <tt class="py-name">old</tt><tt class="py-op">:</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">                        <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-147" 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-142', 'text', 'link-137');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new</tt> </tt>
-<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="lxml.html.clean.Cleaner.comments" class="py-name" href="#" onclick="return doclink('link-143', 'comments', 'link-45');">comments</a></tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="lxml.html.clean.Cleaner.processing_instructions" class="py-name" href="#" onclick="return doclink('link-144', 'processing_instructions', 'link-50');">processing_instructions</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-comment"># FIXME: why either?  I feel like there's some obscure reason</tt> </tt>
-<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line">            <tt class="py-comment"># because you can put PIs in comments...?  But I've already</tt> </tt>
-<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">            <tt class="py-comment"># forgotten it</tt> </tt>
-<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">            <tt id="link-145" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-145', 'kill_tags', 'link-57');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="lxml.html.CheckboxValues.add
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-147', 'text', 'link-142');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="lxml.html.clean.Cleaner.comments" class="py-name" href="#" onclick="return doclink('link-148', 'comments', 'link-45');">comments</a></tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="lxml.html.clean.Cleaner.processing_instructions" class="py-name" href="#" onclick="return doclink('link-149', 'processing_instructions', 'link-51');">processing_instructions</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">            <tt class="py-comment"># FIXME: why either?  I feel like there's some obscure reason</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line">            <tt class="py-comment"># because you can put PIs in comments...?  But I've already</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line">            <tt class="py-comment"># forgotten it</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line">            <tt id="link-150" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-150', 'kill_tags', 'link-58');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="lxml.html.CheckboxValues.add
 lxml.html.Classes.add
-lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-146', 'add', 'link-95');">add</a></tt><tt class="py-op">(</tt><tt id="link-147" class="py-name"><a title="lxml.etree
+lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-151', 'add', 'link-99');">add</a></tt><tt class="py-op">(</tt><tt id="link-152" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-147', 'etree', 'link-3');">etree</a></tt><tt class="py-op">.</tt><tt id="link-148" class="py-name" targets="Function lxml.etree.Comment()=lxml.etree-module.html#Comment"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-148', 'Comment', 'link-148');">Comment</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-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="lxml.html.clean.Cleaner.processing_instructions" class="py-name" href="#" onclick="return doclink('link-149', 'processing_instructions', 'link-50');">processing_instructions</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">            <tt id="link-150" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-150', 'kill_tags', 'link-57');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="lxml.html.CheckboxValues.add
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-152', 'etree', 'link-3');">etree</a></tt><tt class="py-op">.</tt><tt id="link-153" class="py-name" targets="Function lxml.etree.Comment()=lxml.etree-module.html#Comment"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-153', 'Comment', 'link-153');">Comment</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="lxml.html.clean.Cleaner.processing_instructions" class="py-name" href="#" onclick="return doclink('link-154', 'processing_instructions', 'link-51');">processing_instructions</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">            <tt id="link-155" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-155', 'kill_tags', 'link-58');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="lxml.html.CheckboxValues.add
 lxml.html.Classes.add
-lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-151', 'add', 'link-95');">add</a></tt><tt class="py-op">(</tt><tt id="link-152" class="py-name"><a title="lxml.etree
+lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-156', 'add', 'link-99');">add</a></tt><tt class="py-op">(</tt><tt id="link-157" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-152', 'etree', 'link-3');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">ProcessingInstruction</tt><tt class="py-op">)</tt> </tt>
-<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><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-46');">style</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">            <tt id="link-154" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-154', 'kill_tags', 'link-57');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="lxml.html.CheckboxValues.add
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-157', 'etree', 'link-3');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">ProcessingInstruction</tt><tt class="py-op">)</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-158', 'style', 'link-46');">style</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">            <tt id="link-159" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-159', 'kill_tags', 'link-58');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="lxml.html.CheckboxValues.add
 lxml.html.Classes.add
-lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-155', 'add', 'link-95');">add</a></tt><tt class="py-op">(</tt><tt class="py-string">'style'</tt><tt class="py-op">)</tt> </tt>
-<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">            <tt id="link-156" class="py-name"><a title="lxml.etree
+lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-160', 'add', 'link-99');">add</a></tt><tt class="py-op">(</tt><tt class="py-string">'style'</tt><tt class="py-op">)</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="lxml.html.clean.Cleaner.inline_style" class="py-name" href="#" onclick="return doclink('link-161', 'inline_style', 'link-47');">inline_style</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">            <tt id="link-162" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-156', 'etree', 'link-3');">etree</a></tt><tt class="py-op">.</tt><tt id="link-157" class="py-name" targets="Function lxml.etree.strip_attributes()=lxml.etree-module.html#strip_attributes"><a title="lxml.etree.strip_attributes" class="py-name" href="#" onclick="return doclink('link-157', 'strip_attributes', 'link-157');">strip_attributes</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-string">'style'</tt><tt class="py-op">)</tt> </tt>
-<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-158', 'links', 'link-47');">links</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line">            <tt id="link-159" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-159', 'kill_tags', 'link-57');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="lxml.html.CheckboxValues.add
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-162', 'etree', 'link-3');">etree</a></tt><tt class="py-op">.</tt><tt id="link-163" class="py-name" targets="Function lxml.etree.strip_attributes()=lxml.etree-module.html#strip_attributes"><a title="lxml.etree.strip_attributes" class="py-name" href="#" onclick="return doclink('link-163', 'strip_attributes', 'link-163');">strip_attributes</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-string">'style'</tt><tt class="py-op">)</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-164', 'links', 'link-48');">links</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line">            <tt id="link-165" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-165', 'kill_tags', 'link-58');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="lxml.html.CheckboxValues.add
 lxml.html.Classes.add
-lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-160', 'add', 'link-95');">add</a></tt><tt class="py-op">(</tt><tt class="py-string">'link'</tt><tt class="py-op">)</tt> </tt>
-<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-161', 'style', 'link-46');">style</a></tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="lxml.html.clean.Cleaner.javascript" class="py-name" href="#" onclick="return doclink('link-162', 'javascript', 'link-44');">javascript</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line">            <tt class="py-comment"># We must get rid of included stylesheets if Javascript is not</tt> </tt>
-<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">            <tt class="py-comment"># allowed, as you can put Javascript in them</tt> </tt>
-<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="lxml.etree._Element.iter
-lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-163', 'iter', 'link-80');">iter</a></tt><tt class="py-op">(</tt><tt class="py-string">'link'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-string">'stylesheet'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-166', 'add', 'link-99');">add</a></tt><tt class="py-op">(</tt><tt class="py-string">'link'</tt><tt class="py-op">)</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</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-46');">style</a></tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="lxml.html.clean.Cleaner.javascript" class="py-name" href="#" onclick="return doclink('link-168', 'javascript', 'link-44');">javascript</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-comment"># We must get rid of included stylesheets if Javascript is not</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">            <tt class="py-comment"># allowed, as you can put Javascript in them</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="lxml.etree._Element.iter
+lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-169', 'iter', 'link-84');">iter</a></tt><tt class="py-op">(</tt><tt class="py-string">'link'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-string">'stylesheet'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-170" 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-164', 'get', 'link-127');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'rel'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line">                    <tt class="py-comment"># Note this kills alternate stylesheets as well</tt> </tt>
-<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name" targets="Method lxml.html.clean.Cleaner.allow_element()=lxml.html.clean.Cleaner-class.html#allow_element"><a title="lxml.html.clean.Cleaner.allow_element" class="py-name" href="#" onclick="return doclink('link-165', 'allow_element', 'link-165');">allow_element</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">                        <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="lxml.html.HtmlMixin.drop_tree" class="py-name" href="#" onclick="return doclink('link-166', 'drop_tree', 'link-136');">drop_tree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="lxml.html.clean.Cleaner.meta" class="py-name" href="#" onclick="return doclink('link-167', 'meta', 'link-48');">meta</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">            <tt id="link-168" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-168', 'kill_tags', 'link-57');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="lxml.html.CheckboxValues.add
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-170', 'get', 'link-131');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'rel'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line">                    <tt class="py-comment"># Note this kills alternate stylesheets as well</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name" targets="Method lxml.html.clean.Cleaner.allow_element()=lxml.html.clean.Cleaner-class.html#allow_element"><a title="lxml.html.clean.Cleaner.allow_element" class="py-name" href="#" onclick="return doclink('link-171', 'allow_element', 'link-171');">allow_element</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line">                        <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="lxml.html.HtmlMixin.drop_tree" class="py-name" href="#" onclick="return doclink('link-172', 'drop_tree', 'link-141');">drop_tree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="lxml.html.clean.Cleaner.meta" class="py-name" href="#" onclick="return doclink('link-173', 'meta', 'link-49');">meta</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">            <tt id="link-174" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-174', 'kill_tags', 'link-58');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="lxml.html.CheckboxValues.add
 lxml.html.Classes.add
-lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-169', 'add', 'link-95');">add</a></tt><tt class="py-op">(</tt><tt class="py-string">'meta'</tt><tt class="py-op">)</tt> </tt>
-<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="lxml.html.clean.Cleaner.page_structure" class="py-name" href="#" onclick="return doclink('link-170', 'page_structure', 'link-49');">page_structure</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">            <tt id="link-171" class="py-name"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-171', 'remove_tags', 'link-55');">remove_tags</a></tt><tt class="py-op">.</tt><tt id="link-172" class="py-name" targets="Method lxml.etree._Attrib.update()=lxml.etree._Attrib-class.html#update,Method lxml.html.Classes.update()=lxml.html.Classes-class.html#update"><a title="lxml.etree._Attrib.update
-lxml.html.Classes.update" class="py-name" href="#" onclick="return doclink('link-172', 'update', 'link-172');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'head'</tt><tt class="py-op">,</tt> <tt class="py-string">'html'</tt><tt class="py-op">,</tt> <tt class="py-string">'title'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="lxml.html.clean.Cleaner.embedded" class="py-name" href="#" onclick="return doclink('link-173', 'embedded', 'link-51');">embedded</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line">            <tt class="py-comment"># FIXME: is &lt;layer&gt; really embedded?</tt> </tt>
-<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line">            <tt class="py-comment"># We should get rid of any &lt;param&gt; tags not inside &lt;applet&gt;;</tt> </tt>
-<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line">            <tt class="py-comment"># These are not really valid anyway.</tt> </tt>
-<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="lxml.etree._Element.iter
-lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-174', 'iter', 'link-80');">iter</a></tt><tt class="py-op">(</tt><tt class="py-string">'param'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">                <tt class="py-name">found_parent</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">                <tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name" targets="Method lxml.etree._Element.getparent()=lxml.etree._Element-class.html#getparent,Method lxml.etree._ElementStringResult.getparent()=lxml.etree._ElementStringResult-class.html#getparent,Method lxml.etree._ElementUnicodeResult.getparent()=lxml.etree._ElementUnicodeResult-class.html#getparent"><a title="lxml.etree._Element.getparent
+lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-175', 'add', 'link-99');">add</a></tt><tt class="py-op">(</tt><tt class="py-string">'meta'</tt><tt class="py-op">)</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="lxml.html.clean.Cleaner.page_structure" class="py-name" href="#" onclick="return doclink('link-176', 'page_structure', 'link-50');">page_structure</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">            <tt id="link-177" class="py-name"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-177', 'remove_tags', 'link-56');">remove_tags</a></tt><tt class="py-op">.</tt><tt id="link-178" class="py-name" targets="Method lxml.etree._Attrib.update()=lxml.etree._Attrib-class.html#update,Method lxml.html.Classes.update()=lxml.html.Classes-class.html#update"><a title="lxml.etree._Attrib.update
+lxml.html.Classes.update" class="py-name" href="#" onclick="return doclink('link-178', 'update', 'link-178');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'head'</tt><tt class="py-op">,</tt> <tt class="py-string">'html'</tt><tt class="py-op">,</tt> <tt class="py-string">'title'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="lxml.html.clean.Cleaner.embedded" class="py-name" href="#" onclick="return doclink('link-179', 'embedded', 'link-52');">embedded</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">            <tt class="py-comment"># FIXME: is &lt;layer&gt; really embedded?</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line">            <tt class="py-comment"># We should get rid of any &lt;param&gt; tags not inside &lt;applet&gt;;</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line">            <tt class="py-comment"># These are not really valid anyway.</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="lxml.etree._Element.iter
+lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-180', 'iter', 'link-84');">iter</a></tt><tt class="py-op">(</tt><tt class="py-string">'param'</tt><tt class="py-op">)</tt><tt class="py-op">)</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">found_parent</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line">                <tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name" targets="Method lxml.etree._Element.getparent()=lxml.etree._Element-class.html#getparent,Method lxml.etree._ElementStringResult.getparent()=lxml.etree._ElementStringResult-class.html#getparent,Method lxml.etree._ElementUnicodeResult.getparent()=lxml.etree._ElementUnicodeResult-class.html#getparent"><a title="lxml.etree._Element.getparent
 lxml.etree._ElementStringResult.getparent
-lxml.etree._ElementUnicodeResult.getparent" class="py-name" href="#" onclick="return doclink('link-175', 'getparent', 'link-175');">getparent</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line">                <tt class="py-keyword">while</tt> <tt class="py-name">parent</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree._ElementUnicodeResult.getparent" class="py-name" href="#" onclick="return doclink('link-181', 'getparent', 'link-181');">getparent</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line">                <tt class="py-keyword">while</tt> <tt class="py-name">parent</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-182" 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-81');">tag</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'applet'</tt><tt class="py-op">,</tt> <tt class="py-string">'object'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">                    <tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="lxml.etree._Element.getparent
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-182', 'tag', 'link-85');">tag</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'applet'</tt><tt class="py-op">,</tt> <tt class="py-string">'object'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">                    <tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="lxml.etree._Element.getparent
 lxml.etree._ElementStringResult.getparent
-lxml.etree._ElementUnicodeResult.getparent" class="py-name" href="#" onclick="return doclink('link-177', 'getparent', 'link-175');">getparent</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">parent</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">                    <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="lxml.html.HtmlMixin.drop_tree" class="py-name" href="#" onclick="return doclink('link-178', 'drop_tree', 'link-136');">drop_tree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line">            <tt id="link-179" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-179', 'kill_tags', 'link-57');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="lxml.etree._Attrib.update
-lxml.html.Classes.update" class="py-name" href="#" onclick="return doclink('link-180', 'update', 'link-172');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'applet'</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line">            <tt class="py-comment"># The alternate contents that are in an iframe are a good fallback:</tt> </tt>
-<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">            <tt id="link-181" class="py-name"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-181', 'remove_tags', 'link-55');">remove_tags</a></tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="lxml.etree._Attrib.update
-lxml.html.Classes.update" class="py-name" href="#" onclick="return doclink('link-182', 'update', 'link-172');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'iframe'</tt><tt class="py-op">,</tt> <tt class="py-string">'embed'</tt><tt class="py-op">,</tt> <tt class="py-string">'layer'</tt><tt class="py-op">,</tt> <tt class="py-string">'object'</tt><tt class="py-op">,</tt> <tt class="py-string">'param'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="lxml.html.clean.Cleaner.frames" class="py-name" href="#" onclick="return doclink('link-183', 'frames', 'link-52');">frames</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line">            <tt class="py-comment"># FIXME: ideally we should look at the frame links, but</tt> </tt>
-<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line">            <tt class="py-comment"># generally frames don't mix properly with an HTML</tt> </tt>
-<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">            <tt class="py-comment"># fragment anyway.</tt> </tt>
-<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line">            <tt id="link-184" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-184', 'kill_tags', 'link-57');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="lxml.etree._Attrib.update
-lxml.html.Classes.update" class="py-name" href="#" onclick="return doclink('link-185', 'update', 'link-172');">update</a></tt><tt class="py-op">(</tt><tt id="link-186" class="py-name"><a title="lxml.html.defs" class="py-name" href="#" onclick="return doclink('link-186', 'defs', 'link-6');">defs</a></tt><tt class="py-op">.</tt><tt id="link-187" class="py-name" targets="Variable lxml.html.defs.frame_tags=lxml.html.defs-module.html#frame_tags"><a title="lxml.html.defs.frame_tags" class="py-name" href="#" onclick="return doclink('link-187', 'frame_tags', 'link-187');">frame_tags</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="lxml.html.HtmlMixin.forms
-lxml.html.clean.Cleaner.forms" class="py-name" href="#" onclick="return doclink('link-188', 'forms', 'link-53');">forms</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-189" class="py-name"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-189', 'remove_tags', 'link-55');">remove_tags</a></tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="lxml.html.CheckboxValues.add
+lxml.etree._ElementUnicodeResult.getparent" class="py-name" href="#" onclick="return doclink('link-183', 'getparent', 'link-181');">getparent</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">parent</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">                    <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="lxml.html.HtmlMixin.drop_tree" class="py-name" href="#" onclick="return doclink('link-184', 'drop_tree', 'link-141');">drop_tree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line">            <tt id="link-185" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-185', 'kill_tags', 'link-58');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="lxml.etree._Attrib.update
+lxml.html.Classes.update" class="py-name" href="#" onclick="return doclink('link-186', 'update', 'link-178');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'applet'</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">            <tt class="py-comment"># The alternate contents that are in an iframe are a good fallback:</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line">            <tt id="link-187" class="py-name"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-187', 'remove_tags', 'link-56');">remove_tags</a></tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="lxml.etree._Attrib.update
+lxml.html.Classes.update" class="py-name" href="#" onclick="return doclink('link-188', 'update', 'link-178');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'iframe'</tt><tt class="py-op">,</tt> <tt class="py-string">'embed'</tt><tt class="py-op">,</tt> <tt class="py-string">'layer'</tt><tt class="py-op">,</tt> <tt class="py-string">'object'</tt><tt class="py-op">,</tt> <tt class="py-string">'param'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="lxml.html.clean.Cleaner.frames" class="py-name" href="#" onclick="return doclink('link-189', 'frames', 'link-53');">frames</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">            <tt class="py-comment"># FIXME: ideally we should look at the frame links, but</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">            <tt class="py-comment"># generally frames don't mix properly with an HTML</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line">            <tt class="py-comment"># fragment anyway.</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line">            <tt id="link-190" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-190', 'kill_tags', 'link-58');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="lxml.etree._Attrib.update
+lxml.html.Classes.update" class="py-name" href="#" onclick="return doclink('link-191', 'update', 'link-178');">update</a></tt><tt class="py-op">(</tt><tt id="link-192" class="py-name"><a title="lxml.html.defs" class="py-name" href="#" onclick="return doclink('link-192', 'defs', 'link-6');">defs</a></tt><tt class="py-op">.</tt><tt id="link-193" class="py-name" targets="Variable lxml.html.defs.frame_tags=lxml.html.defs-module.html#frame_tags"><a title="lxml.html.defs.frame_tags" class="py-name" href="#" onclick="return doclink('link-193', 'frame_tags', 'link-193');">frame_tags</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="lxml.html.HtmlMixin.forms
+lxml.html.clean.Cleaner.forms" class="py-name" href="#" onclick="return doclink('link-194', 'forms', 'link-54');">forms</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">            <tt id="link-195" class="py-name"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-195', 'remove_tags', 'link-56');">remove_tags</a></tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="lxml.html.CheckboxValues.add
 lxml.html.Classes.add
-lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-190', 'add', 'link-95');">add</a></tt><tt class="py-op">(</tt><tt class="py-string">'form'</tt><tt class="py-op">)</tt> </tt>
-<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">            <tt id="link-191" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-191', 'kill_tags', 'link-57');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="lxml.etree._Attrib.update
-lxml.html.Classes.update" class="py-name" href="#" onclick="return doclink('link-192', 'update', 'link-172');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'button'</tt><tt class="py-op">,</tt> <tt class="py-string">'input'</tt><tt class="py-op">,</tt> <tt class="py-string">'select'</tt><tt class="py-op">,</tt> <tt class="py-string">'textarea'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="lxml.html.clean.Cleaner.annoying_tags" class="py-name" href="#" onclick="return doclink('link-193', 'annoying_tags', 'link-54');">annoying_tags</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line">            <tt id="link-194" class="py-name"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-194', 'remove_tags', 'link-55');">remove_tags</a></tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="lxml.etree._Attrib.update
-lxml.html.Classes.update" class="py-name" href="#" onclick="return doclink('link-195', 'update', 'link-172');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'blink'</tt><tt class="py-op">,</tt> <tt class="py-string">'marquee'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line"> </tt>
-<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">        <tt class="py-name">_remove</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line">        <tt class="py-name">_kill</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="lxml.etree._Element.iter
-lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-196', 'iter', 'link-80');">iter</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-196', 'add', 'link-99');">add</a></tt><tt class="py-op">(</tt><tt class="py-string">'form'</tt><tt class="py-op">)</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">            <tt id="link-197" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-197', 'kill_tags', 'link-58');">kill_tags</a></tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="lxml.etree._Attrib.update
+lxml.html.Classes.update" class="py-name" href="#" onclick="return doclink('link-198', 'update', 'link-178');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'button'</tt><tt class="py-op">,</tt> <tt class="py-string">'input'</tt><tt class="py-op">,</tt> <tt class="py-string">'select'</tt><tt class="py-op">,</tt> <tt class="py-string">'textarea'</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-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="lxml.html.clean.Cleaner.annoying_tags" class="py-name" href="#" onclick="return doclink('link-199', 'annoying_tags', 'link-55');">annoying_tags</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line">            <tt id="link-200" class="py-name"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-200', 'remove_tags', 'link-56');">remove_tags</a></tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="lxml.etree._Attrib.update
+lxml.html.Classes.update" class="py-name" href="#" onclick="return doclink('link-201', 'update', 'link-178');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'blink'</tt><tt class="py-op">,</tt> <tt class="py-string">'marquee'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line"> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">        <tt class="py-name">_remove</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line">        <tt class="py-name">_kill</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="lxml.etree._Element.iter
+lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-202', 'iter', 'link-84');">iter</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-203" 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-197', 'tag', 'link-81');">tag</a></tt> <tt class="py-keyword">in</tt> <tt id="link-198" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-198', 'kill_tags', 'link-57');">kill_tags</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="lxml.html.clean.Cleaner.allow_element" class="py-name" href="#" onclick="return doclink('link-199', 'allow_element', 'link-165');">allow_element</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">                    <tt class="py-keyword">continue</tt> </tt>
-<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line">                <tt class="py-name">_kill</tt><tt class="py-op">.</tt><tt id="link-200" 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-200', 'append', 'link-200');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
-<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-203', 'tag', 'link-85');">tag</a></tt> <tt class="py-keyword">in</tt> <tt id="link-204" class="py-name"><a title="lxml.html.clean.Cleaner.kill_tags" class="py-name" href="#" onclick="return doclink('link-204', 'kill_tags', 'link-58');">kill_tags</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="lxml.html.clean.Cleaner.allow_element" class="py-name" href="#" onclick="return doclink('link-205', 'allow_element', 'link-171');">allow_element</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">                    <tt class="py-keyword">continue</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">                <tt class="py-name">_kill</tt><tt class="py-op">.</tt><tt id="link-206" 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-206', 'append', 'link-206');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-207" 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-201', 'tag', 'link-81');">tag</a></tt> <tt class="py-keyword">in</tt> <tt id="link-202" class="py-name"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-202', 'remove_tags', 'link-55');">remove_tags</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="lxml.html.clean.Cleaner.allow_element" class="py-name" href="#" onclick="return doclink('link-203', 'allow_element', 'link-165');">allow_element</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">                    <tt class="py-keyword">continue</tt> </tt>
-<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line">                <tt class="py-name">_remove</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-204', 'append', 'link-200');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
-<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line"> </tt>
-<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">_remove</tt> <tt class="py-keyword">and</tt> <tt class="py-name">_remove</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">doc</tt><tt class="py-op">:</tt> </tt>
-<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line">            <tt class="py-comment"># We have to drop the parent-most tag, which we can't</tt> </tt>
-<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">            <tt class="py-comment"># do.  Instead we'll rewrite it:</tt> </tt>
-<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">            <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">_remove</tt><tt class="py-op">.</tt><tt id="link-205" 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-205', 'pop', 'link-205');">pop</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-207', 'tag', 'link-85');">tag</a></tt> <tt class="py-keyword">in</tt> <tt id="link-208" class="py-name"><a title="lxml.html.clean.Cleaner.remove_tags" class="py-name" href="#" onclick="return doclink('link-208', 'remove_tags', 'link-56');">remove_tags</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="lxml.html.clean.Cleaner.allow_element" class="py-name" href="#" onclick="return doclink('link-209', 'allow_element', 'link-171');">allow_element</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line">                    <tt class="py-keyword">continue</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line">                <tt class="py-name">_remove</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-210', 'append', 'link-206');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line"> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">_remove</tt> <tt class="py-keyword">and</tt> <tt class="py-name">_remove</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">doc</tt><tt class="py-op">:</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line">            <tt class="py-comment"># We have to drop the parent-most tag, which we can't</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line">            <tt class="py-comment"># do.  Instead we'll rewrite it:</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line">            <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">_remove</tt><tt class="py-op">.</tt><tt id="link-211" 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-211', 'pop', 'link-211');">pop</a></tt><tt class="py-op">(</tt><tt class="py-number">0</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">el</tt><tt class="py-op">.</tt><tt id="link-212" 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-206', 'tag', 'link-81');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'div'</tt> </tt>
-<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-212', 'tag', 'link-85');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'div'</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-207', 'attrib', 'link-103');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-208" class="py-name" targets="Method lxml.etree.DocInfo.clear()=lxml.etree.DocInfo-class.html#clear,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.DocInfo.clear
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-213', 'attrib', 'link-107');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-214" class="py-name" targets="Method lxml.etree.DocInfo.clear()=lxml.etree.DocInfo-class.html#clear,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.DocInfo.clear
 lxml.etree._Attrib.clear
 lxml.etree._Element.clear
-lxml.etree._ErrorLog.clear" class="py-name" href="#" onclick="return doclink('link-208', 'clear', 'link-208');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">_kill</tt> <tt class="py-keyword">and</tt> <tt class="py-name">_kill</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">doc</tt><tt class="py-op">:</tt> </tt>
-<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line">            <tt class="py-comment"># We have to drop the parent-most element, which we can't</tt> </tt>
-<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">            <tt class="py-comment"># do.  Instead we'll clear it:</tt> </tt>
-<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line">            <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">_kill</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="lxml.etree._Attrib.pop" class="py-name" href="#" onclick="return doclink('link-209', 'pop', 'link-205');">pop</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree._ErrorLog.clear" class="py-name" href="#" onclick="return doclink('link-214', 'clear', 'link-214');">clear</a></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-keyword">elif</tt> <tt class="py-name">_kill</tt> <tt class="py-keyword">and</tt> <tt class="py-name">_kill</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">doc</tt><tt class="py-op">:</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">            <tt class="py-comment"># We have to drop the parent-most element, which we can't</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line">            <tt class="py-comment"># do.  Instead we'll clear it:</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line">            <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">_kill</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="lxml.etree._Attrib.pop" class="py-name" href="#" onclick="return doclink('link-215', 'pop', 'link-211');">pop</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-216" 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-210', 'tag', 'link-81');">tag</a></tt> <tt class="py-op">!=</tt> <tt class="py-string">'html'</tt><tt class="py-op">:</tt> </tt>
-<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line">                <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-216', 'tag', 'link-85');">tag</a></tt> <tt class="py-op">!=</tt> <tt class="py-string">'html'</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">el</tt><tt class="py-op">.</tt><tt id="link-217" 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-211', 'tag', 'link-81');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'div'</tt> </tt>
-<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="lxml.etree.DocInfo.clear
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-217', 'tag', 'link-85');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'div'</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="lxml.etree.DocInfo.clear
 lxml.etree._Attrib.clear
 lxml.etree._Element.clear
-lxml.etree._ErrorLog.clear" class="py-name" href="#" onclick="return doclink('link-212', 'clear', 'link-208');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line"> </tt>
-<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">        <tt class="py-name">_kill</tt><tt class="py-op">.</tt><tt class="py-name">reverse</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># start with innermost tags</tt> </tt>
-<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">_kill</tt><tt class="py-op">:</tt> </tt>
-<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="lxml.html.HtmlMixin.drop_tree" class="py-name" href="#" onclick="return doclink('link-213', 'drop_tree', 'link-136');">drop_tree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">_remove</tt><tt class="py-op">:</tt> </tt>
-<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name" targets="Method lxml.html.HtmlMixin.drop_tag()=lxml.html.HtmlMixin-class.html#drop_tag"><a title="lxml.html.HtmlMixin.drop_tag" class="py-name" href="#" onclick="return doclink('link-214', 'drop_tag', 'link-214');">drop_tag</a></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>
-<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="lxml.html.clean.Cleaner.remove_unknown_tags" class="py-name" href="#" onclick="return doclink('link-215', 'remove_unknown_tags', 'link-58');">remove_unknown_tags</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-216" class="py-name"><a title="lxml.html.clean.Cleaner.allow_tags" class="py-name" href="#" onclick="return doclink('link-216', 'allow_tags', 'link-56');">allow_tags</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt> </tt>
-<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">                    <tt class="py-string">"It does not make sense to pass in both allow_tags and remove_unknown_tags"</tt><tt class="py-op">)</tt> </tt>
-<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">            <tt id="link-217" class="py-name"><a title="lxml.html.clean.Cleaner.allow_tags" class="py-name" href="#" onclick="return doclink('link-217', 'allow_tags', 'link-56');">allow_tags</a></tt> <tt class="py-op">=</tt> <tt id="link-218" class="py-name"><a title="lxml.etree._Element.set
-lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-218', 'set', 'link-66');">set</a></tt><tt class="py-op">(</tt><tt id="link-219" class="py-name"><a title="lxml.html.defs" class="py-name" href="#" onclick="return doclink('link-219', 'defs', 'link-6');">defs</a></tt><tt class="py-op">.</tt><tt id="link-220" 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-220', 'tags', 'link-220');">tags</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-221" class="py-name"><a title="lxml.html.clean.Cleaner.allow_tags" class="py-name" href="#" onclick="return doclink('link-221', 'allow_tags', 'link-56');">allow_tags</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">            <tt class="py-name">bad</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="lxml.etree._Element.iter
-lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-222', 'iter', 'link-80');">iter</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree._ErrorLog.clear" class="py-name" href="#" onclick="return doclink('link-218', 'clear', 'link-214');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line"> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">        <tt class="py-name">_kill</tt><tt class="py-op">.</tt><tt class="py-name">reverse</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># start with innermost tags</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">_kill</tt><tt class="py-op">:</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="lxml.html.HtmlMixin.drop_tree" class="py-name" href="#" onclick="return doclink('link-219', 'drop_tree', 'link-141');">drop_tree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">_remove</tt><tt class="py-op">:</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-220" class="py-name" targets="Method lxml.html.HtmlMixin.drop_tag()=lxml.html.HtmlMixin-class.html#drop_tag"><a title="lxml.html.HtmlMixin.drop_tag" class="py-name" href="#" onclick="return doclink('link-220', 'drop_tag', 'link-220');">drop_tag</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line"> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="lxml.html.clean.Cleaner.remove_unknown_tags" class="py-name" href="#" onclick="return doclink('link-221', 'remove_unknown_tags', 'link-59');">remove_unknown_tags</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-222" class="py-name"><a title="lxml.html.clean.Cleaner.allow_tags" class="py-name" href="#" onclick="return doclink('link-222', 'allow_tags', 'link-57');">allow_tags</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line">                    <tt class="py-string">"It does not make sense to pass in both allow_tags and remove_unknown_tags"</tt><tt class="py-op">)</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">            <tt id="link-223" class="py-name"><a title="lxml.html.clean.Cleaner.allow_tags" class="py-name" href="#" onclick="return doclink('link-223', 'allow_tags', 'link-57');">allow_tags</a></tt> <tt class="py-op">=</tt> <tt id="link-224" class="py-name"><a title="lxml.etree._Element.set
+lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-224', 'set', 'link-67');">set</a></tt><tt class="py-op">(</tt><tt id="link-225" class="py-name"><a title="lxml.html.defs" class="py-name" href="#" onclick="return doclink('link-225', 'defs', 'link-6');">defs</a></tt><tt class="py-op">.</tt><tt id="link-226" 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-226', 'tags', 'link-226');">tags</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-keyword">if</tt> <tt id="link-227" class="py-name"><a title="lxml.html.clean.Cleaner.allow_tags" class="py-name" href="#" onclick="return doclink('link-227', 'allow_tags', 'link-57');">allow_tags</a></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">bad</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-228" class="py-name"><a title="lxml.etree._Element.iter
+lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-228', 'iter', 'link-84');">iter</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-229" 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-223', 'tag', 'link-81');">tag</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-224" class="py-name"><a title="lxml.html.clean.Cleaner.allow_tags" class="py-name" href="#" onclick="return doclink('link-224', 'allow_tags', 'link-56');">allow_tags</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line">                    <tt class="py-name">bad</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-225', 'append', 'link-200');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
-<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">bad</tt><tt class="py-op">:</tt> </tt>
-<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">bad</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">doc</tt><tt class="py-op">:</tt> </tt>
-<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line">                    <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">bad</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="lxml.etree._Attrib.pop" class="py-name" href="#" onclick="return doclink('link-226', 'pop', 'link-205');">pop</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">                    <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-229', 'tag', 'link-85');">tag</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-230" class="py-name"><a title="lxml.html.clean.Cleaner.allow_tags" class="py-name" href="#" onclick="return doclink('link-230', 'allow_tags', 'link-57');">allow_tags</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">                    <tt class="py-name">bad</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-231', 'append', 'link-206');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">bad</tt><tt class="py-op">:</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">bad</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">doc</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">el</tt> <tt class="py-op">=</tt> <tt class="py-name">bad</tt><tt class="py-op">.</tt><tt id="link-232" class="py-name"><a title="lxml.etree._Attrib.pop" class="py-name" href="#" onclick="return doclink('link-232', 'pop', 'link-211');">pop</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line">                    <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-233" 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-227', 'tag', 'link-81');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'div'</tt> </tt>
-<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">                    <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-228" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-233', 'tag', 'link-85');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'div'</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line">                    <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-228', 'attrib', 'link-103');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="lxml.etree.DocInfo.clear
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-234', 'attrib', 'link-107');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="lxml.etree.DocInfo.clear
 lxml.etree._Attrib.clear
 lxml.etree._Element.clear
-lxml.etree._ErrorLog.clear" class="py-name" href="#" onclick="return doclink('link-229', 'clear', 'link-208');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">bad</tt><tt class="py-op">:</tt> </tt>
-<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line">                    <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-230" class="py-name"><a title="lxml.html.HtmlMixin.drop_tag" class="py-name" href="#" onclick="return doclink('link-230', 'drop_tag', 'link-214');">drop_tag</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="lxml.html.clean.Cleaner.add_nofollow" class="py-name" href="#" onclick="return doclink('link-231', 'add_nofollow', 'link-63');">add_nofollow</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-232" class="py-name"><a title="lxml.html.clean._find_external_links" class="py-name" href="#" onclick="return doclink('link-232', '_find_external_links', 'link-39');">_find_external_links</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name" targets="Method lxml.html.clean.Cleaner.allow_follow()=lxml.html.clean.Cleaner-class.html#allow_follow"><a title="lxml.html.clean.Cleaner.allow_follow" class="py-name" href="#" onclick="return doclink('link-233', 'allow_follow', 'link-233');">allow_follow</a></tt><tt class="py-op">(</tt><tt class="py-name">el</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">rel</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ErrorLog.clear" class="py-name" href="#" onclick="return doclink('link-235', 'clear', 'link-214');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">bad</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">el</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="lxml.html.HtmlMixin.drop_tag" class="py-name" href="#" onclick="return doclink('link-236', 'drop_tag', 'link-220');">drop_tag</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="lxml.html.clean.Cleaner.add_nofollow" class="py-name" href="#" onclick="return doclink('link-237', 'add_nofollow', 'link-64');">add_nofollow</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-238" class="py-name"><a title="lxml.html.clean._find_external_links" class="py-name" href="#" onclick="return doclink('link-238', '_find_external_links', 'link-39');">_find_external_links</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name" targets="Method lxml.html.clean.Cleaner.allow_follow()=lxml.html.clean.Cleaner-class.html#allow_follow"><a title="lxml.html.clean.Cleaner.allow_follow" class="py-name" href="#" onclick="return doclink('link-239', 'allow_follow', 'link-239');">allow_follow</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</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">rel</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-240" 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-234', 'get', 'link-127');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'rel'</tt><tt class="py-op">)</tt> </tt>
-<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">rel</tt><tt class="py-op">:</tt> </tt>
-<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">'nofollow'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">rel</tt> </tt>
-<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line">                                <tt class="py-keyword">and</tt> <tt class="py-string">' nofollow '</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">' %s '</tt> <tt class="py-op">%</tt> <tt class="py-name">rel</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">                            <tt class="py-keyword">continue</tt> </tt>
-<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">                        <tt class="py-name">rel</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s nofollow'</tt> <tt class="py-op">%</tt> <tt class="py-name">rel</tt> </tt>
-<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line">                        <tt class="py-name">rel</tt> <tt class="py-op">=</tt> <tt class="py-string">'nofollow'</tt> </tt>
-<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line">                    <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="lxml.etree._Element.set
-lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-235', 'set', 'link-66');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'rel'</tt><tt class="py-op">,</tt> <tt class="py-name">rel</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line"> </tt>
-<a name="Cleaner.allow_follow"></a><div id="Cleaner.allow_follow-def"><a name="L419"></a><tt class="py-lineno">419</tt> <a class="py-toggle" href="#" id="Cleaner.allow_follow-toggle" onclick="return toggle('Cleaner.allow_follow');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#allow_follow">allow_follow</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">anchor</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Cleaner.allow_follow-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner.allow_follow-expanded"><a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
-<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line"><tt class="py-docstring">        Override to suppress rel="nofollow" on some anchors.</tt> </tt>
-<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
-<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
-</div><a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line"> </tt>
-<a name="Cleaner.allow_element"></a><div id="Cleaner.allow_element-def"><a name="L425"></a><tt class="py-lineno">425</tt> <a class="py-toggle" href="#" id="Cleaner.allow_element-toggle" onclick="return toggle('Cleaner.allow_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#allow_element">allow_element</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">el</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Cleaner.allow_element-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner.allow_element-expanded"><a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-240', 'get', 'link-131');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'rel'</tt><tt class="py-op">)</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">rel</tt><tt class="py-op">:</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">'nofollow'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">rel</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line">                                <tt class="py-keyword">and</tt> <tt class="py-string">' nofollow '</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">' %s '</tt> <tt class="py-op">%</tt> <tt class="py-name">rel</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line">                            <tt class="py-keyword">continue</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">                        <tt class="py-name">rel</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s nofollow'</tt> <tt class="py-op">%</tt> <tt class="py-name">rel</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line">                        <tt class="py-name">rel</tt> <tt class="py-op">=</tt> <tt class="py-string">'nofollow'</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">                    <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-241" class="py-name"><a title="lxml.etree._Element.set
+lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-241', 'set', 'link-67');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'rel'</tt><tt class="py-op">,</tt> <tt class="py-name">rel</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line"> </tt>
+<a name="Cleaner.allow_follow"></a><div id="Cleaner.allow_follow-def"><a name="L428"></a><tt class="py-lineno">428</tt> <a class="py-toggle" href="#" id="Cleaner.allow_follow-toggle" onclick="return toggle('Cleaner.allow_follow');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#allow_follow">allow_follow</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">anchor</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Cleaner.allow_follow-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner.allow_follow-expanded"><a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line"><tt class="py-docstring">        Override to suppress rel="nofollow" on some anchors.</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line"> </tt>
+<a name="Cleaner.allow_element"></a><div id="Cleaner.allow_element-def"><a name="L434"></a><tt class="py-lineno">434</tt> <a class="py-toggle" href="#" id="Cleaner.allow_element-toggle" onclick="return toggle('Cleaner.allow_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#allow_element">allow_element</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">el</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Cleaner.allow_element-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner.allow_element-expanded"><a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-242" 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-236', 'tag', 'link-81');">tag</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="lxml.html.clean.Cleaner._tag_link_attrs" class="py-name" href="#" onclick="return doclink('link-237', '_tag_link_attrs', 'link-77');">_tag_link_attrs</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
-<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line">        <tt class="py-name">attr</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.html.clean.Cleaner._tag_link_attrs" class="py-name" href="#" onclick="return doclink('link-238', '_tag_link_attrs', 'link-77');">_tag_link_attrs</a></tt><tt class="py-op">[</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-242', 'tag', 'link-85');">tag</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="lxml.html.clean.Cleaner._tag_link_attrs" class="py-name" href="#" onclick="return doclink('link-243', '_tag_link_attrs', 'link-81');">_tag_link_attrs</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line">        <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="lxml.html.clean.Cleaner._tag_link_attrs" class="py-name" href="#" onclick="return doclink('link-244', '_tag_link_attrs', 'link-81');">_tag_link_attrs</a></tt><tt class="py-op">[</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-245" 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-239', 'tag', 'link-81');">tag</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-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">one_attr</tt> <tt class="py-keyword">in</tt> <tt class="py-name">attr</tt><tt class="py-op">:</tt> </tt>
-<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line">                <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-245', 'tag', 'link-85');">tag</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</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">attr</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">one_attr</tt> <tt class="py-keyword">in</tt> <tt class="py-name">attr</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">url</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-246" 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-240', 'get', 'link-127');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">one_attr</tt><tt class="py-op">)</tt> </tt>
-<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">url</tt><tt class="py-op">:</tt> </tt>
-<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
-<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-241" class="py-name" targets="Method lxml.html.clean.Cleaner.allow_embedded_url()=lxml.html.clean.Cleaner-class.html#allow_embedded_url"><a title="lxml.html.clean.Cleaner.allow_embedded_url" class="py-name" href="#" onclick="return doclink('link-241', 'allow_embedded_url', 'link-241');">allow_embedded_url</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">,</tt> <tt class="py-name">url</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-keyword">return</tt> <tt class="py-name">False</tt> </tt>
-<a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
-<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line">            <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-246', 'get', 'link-131');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">one_attr</tt><tt class="py-op">)</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">url</tt><tt class="py-op">:</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-247" class="py-name" targets="Method lxml.html.clean.Cleaner.allow_embedded_url()=lxml.html.clean.Cleaner-class.html#allow_embedded_url"><a title="lxml.html.clean.Cleaner.allow_embedded_url" class="py-name" href="#" onclick="return doclink('link-247', 'allow_embedded_url', 'link-247');">allow_embedded_url</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">,</tt> <tt class="py-name">url</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line">            <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-248" 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-242', 'get', 'link-127');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt>
-<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">url</tt><tt class="py-op">:</tt> </tt>
-<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
-<a name="L441"></a><tt class="py-lineno">441</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-243" class="py-name"><a title="lxml.html.clean.Cleaner.allow_embedded_url" class="py-name" href="#" onclick="return doclink('link-243', 'allow_embedded_url', 'link-241');">allow_embedded_url</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">,</tt> <tt class="py-name">url</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="Cleaner.allow_embedded_url"></a><div id="Cleaner.allow_embedded_url-def"><a name="L443"></a><tt class="py-lineno">443</tt> <a class="py-toggle" href="#" id="Cleaner.allow_embedded_url-toggle" onclick="return toggle('Cleaner.allow_embedded_url');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#allow_embedded_url">allow_embedded_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">el</tt><tt class="py-op">,</tt> <tt class="py-param">url</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Cleaner.allow_embedded_url-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner.allow_embedded_url-expanded"><a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="lxml.html.clean.Cleaner.whitelist_tags" class="py-name" href="#" onclick="return doclink('link-244', 'whitelist_tags', 'link-65');">whitelist_tags</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> </tt>
-<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line">            <tt class="py-keyword">and</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-248', 'get', 'link-131');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">url</tt><tt class="py-op">:</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</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-249" class="py-name"><a title="lxml.html.clean.Cleaner.allow_embedded_url" class="py-name" href="#" onclick="return doclink('link-249', 'allow_embedded_url', 'link-247');">allow_embedded_url</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">,</tt> <tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line"> </tt>
+<a name="Cleaner.allow_embedded_url"></a><div id="Cleaner.allow_embedded_url-def"><a name="L452"></a><tt class="py-lineno">452</tt> <a class="py-toggle" href="#" id="Cleaner.allow_embedded_url-toggle" onclick="return toggle('Cleaner.allow_embedded_url');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#allow_embedded_url">allow_embedded_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">el</tt><tt class="py-op">,</tt> <tt class="py-param">url</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Cleaner.allow_embedded_url-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner.allow_embedded_url-expanded"><a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-250" class="py-name"><a title="lxml.html.clean.Cleaner.whitelist_tags" class="py-name" href="#" onclick="return doclink('link-250', 'whitelist_tags', 'link-66');">whitelist_tags</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line">            <tt class="py-keyword">and</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-251" 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-245', 'tag', 'link-81');">tag</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name"><a title="lxml.html.clean.Cleaner.whitelist_tags" class="py-name" href="#" onclick="return doclink('link-246', 'whitelist_tags', 'link-65');">whitelist_tags</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
-<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line">        <tt class="py-name">scheme</tt><tt class="py-op">,</tt> <tt class="py-name">netloc</tt><tt class="py-op">,</tt> <tt id="link-247" class="py-name" targets="Variable lxml.etree.XPath.path=lxml.etree.XPath-class.html#path"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-247', 'path', 'link-247');">path</a></tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-name">fragment</tt> <tt class="py-op">=</tt> <tt class="py-name">urlsplit</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
-<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line">        <tt class="py-name">netloc</tt> <tt class="py-op">=</tt> <tt class="py-name">netloc</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">':'</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>
-<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">scheme</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'http'</tt><tt class="py-op">,</tt> <tt class="py-string">'https'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
-<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">netloc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-248" class="py-name"><a title="lxml.html.clean.Cleaner.host_whitelist" class="py-name" href="#" onclick="return doclink('link-248', 'host_whitelist', 'link-64');">host_whitelist</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
-<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
-</div><a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line"> </tt>
-<a name="Cleaner.kill_conditional_comments"></a><div id="Cleaner.kill_conditional_comments-def"><a name="L455"></a><tt class="py-lineno">455</tt> <a class="py-toggle" href="#" id="Cleaner.kill_conditional_comments-toggle" onclick="return toggle('Cleaner.kill_conditional_comments');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#kill_conditional_comments">kill_conditional_comments</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">doc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Cleaner.kill_conditional_comments-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner.kill_conditional_comments-expanded"><a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
-<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line"><tt class="py-docstring">        IE conditional comments basically embed HTML that the parser</tt> </tt>
-<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line"><tt class="py-docstring">        doesn't normally see.  We can't allow anything like that, so</tt> </tt>
-<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line"><tt class="py-docstring">        we'll kill any comments that could be conditional.</tt> </tt>
-<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
-<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line">        <tt class="py-name">bad</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 class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-249" class="py-name" targets="Method lxml.html.clean.Cleaner._kill_elements()=lxml.html.clean.Cleaner-class.html#_kill_elements"><a title="lxml.html.clean.Cleaner._kill_elements" class="py-name" href="#" onclick="return doclink('link-249', '_kill_elements', 'link-249');">_kill_elements</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line">            <tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">el</tt><tt class="py-op">:</tt> <tt id="link-250" class="py-name"><a title="lxml.html.clean._conditional_comment_re" class="py-name" href="#" onclick="return doclink('link-250', '_conditional_comment_re', 'link-33');">_conditional_comment_re</a></tt><tt class="py-op">.</tt><tt class="py-name">search</tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-251" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-251', 'tag', 'link-85');">tag</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-252" class="py-name"><a title="lxml.html.clean.Cleaner.whitelist_tags" class="py-name" href="#" onclick="return doclink('link-252', 'whitelist_tags', 'link-66');">whitelist_tags</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line">        <tt class="py-name">scheme</tt><tt class="py-op">,</tt> <tt class="py-name">netloc</tt><tt class="py-op">,</tt> <tt id="link-253" class="py-name" targets="Variable lxml.etree.XPath.path=lxml.etree.XPath-class.html#path"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-253', 'path', 'link-253');">path</a></tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-name">fragment</tt> <tt class="py-op">=</tt> <tt class="py-name">urlsplit</tt><tt class="py-op">(</tt><tt class="py-name">url</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">netloc</tt> <tt class="py-op">=</tt> <tt class="py-name">netloc</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">':'</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>
+<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">scheme</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'http'</tt><tt class="py-op">,</tt> <tt class="py-string">'https'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">netloc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="lxml.html.clean.Cleaner.host_whitelist" class="py-name" href="#" onclick="return doclink('link-254', 'host_whitelist', 'link-65');">host_whitelist</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line"> </tt>
+<a name="Cleaner.kill_conditional_comments"></a><div id="Cleaner.kill_conditional_comments-def"><a name="L464"></a><tt class="py-lineno">464</tt> <a class="py-toggle" href="#" id="Cleaner.kill_conditional_comments-toggle" onclick="return toggle('Cleaner.kill_conditional_comments');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#kill_conditional_comments">kill_conditional_comments</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">doc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Cleaner.kill_conditional_comments-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner.kill_conditional_comments-expanded"><a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line"><tt class="py-docstring">        IE conditional comments basically embed HTML that the parser</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line"><tt class="py-docstring">        doesn't normally see.  We can't allow anything like that, so</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line"><tt class="py-docstring">        we'll kill any comments that could be conditional.</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">        <tt class="py-name">bad</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-255" class="py-name" targets="Method lxml.html.clean.Cleaner._kill_elements()=lxml.html.clean.Cleaner-class.html#_kill_elements"><a title="lxml.html.clean.Cleaner._kill_elements" class="py-name" href="#" onclick="return doclink('link-255', '_kill_elements', 'link-255');">_kill_elements</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line">            <tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">el</tt><tt class="py-op">:</tt> <tt id="link-256" class="py-name"><a title="lxml.html.clean._conditional_comment_re" class="py-name" href="#" onclick="return doclink('link-256', '_conditional_comment_re', 'link-33');">_conditional_comment_re</a></tt><tt class="py-op">.</tt><tt class="py-name">search</tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-257" 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-251', 'text', 'link-137');">text</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line">            <tt id="link-252" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-257', 'text', 'link-142');">text</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line">            <tt id="link-258" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-252', 'etree', 'link-3');">etree</a></tt><tt class="py-op">.</tt><tt id="link-253" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-253', 'Comment', 'link-148');">Comment</a></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="Cleaner._kill_elements"></a><div id="Cleaner._kill_elements-def"><a name="L466"></a><tt class="py-lineno">466</tt> <a class="py-toggle" href="#" id="Cleaner._kill_elements-toggle" onclick="return toggle('Cleaner._kill_elements');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#_kill_elements">_kill_elements</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">doc</tt><tt class="py-op">,</tt> <tt class="py-param">condition</tt><tt class="py-op">,</tt> <tt class="py-param">iterate</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="Cleaner._kill_elements-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner._kill_elements-expanded"><a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line">        <tt class="py-name">bad</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="lxml.etree._Element.iter
-lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-254', 'iter', 'link-80');">iter</a></tt><tt class="py-op">(</tt><tt class="py-name">iterate</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">condition</tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">                <tt class="py-name">bad</tt><tt class="py-op">.</tt><tt id="link-255" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-255', 'append', 'link-200');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
-<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">bad</tt><tt class="py-op">:</tt> </tt>
-<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name"><a title="lxml.html.HtmlMixin.drop_tree" class="py-name" href="#" onclick="return doclink('link-256', 'drop_tree', 'link-136');">drop_tree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line"> </tt>
-<a name="Cleaner._remove_javascript_link"></a><div id="Cleaner._remove_javascript_link-def"><a name="L474"></a><tt class="py-lineno">474</tt> <a class="py-toggle" href="#" id="Cleaner._remove_javascript_link-toggle" onclick="return toggle('Cleaner._remove_javascript_link');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#_remove_javascript_link">_remove_javascript_link</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">link</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Cleaner._remove_javascript_link-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner._remove_javascript_link-expanded"><a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line">        <tt class="py-comment"># links like "j a v a s c r i p t:" might be interpreted in IE</tt> </tt>
-<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">        <tt class="py-name">new</tt> <tt class="py-op">=</tt> <tt id="link-257" class="py-name"><a title="lxml.html.clean._substitute_whitespace" class="py-name" href="#" onclick="return doclink('link-257', '_substitute_whitespace', 'link-32');">_substitute_whitespace</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">link</tt><tt class="py-op">)</tt> </tt>
-<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-258" class="py-name" targets="Function lxml.html.clean._is_javascript_scheme()=lxml.html.clean-module.html#_is_javascript_scheme"><a title="lxml.html.clean._is_javascript_scheme" class="py-name" href="#" onclick="return doclink('link-258', '_is_javascript_scheme', 'link-258');">_is_javascript_scheme</a></tt><tt class="py-op">(</tt><tt class="py-name">new</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">            <tt class="py-comment"># FIXME: should this be None to delete?</tt> </tt>
-<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
-<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">link</tt> </tt>
-</div><a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line"> </tt>
-<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line">    <tt id="link-259" class="py-name" targets="Method lxml.html.clean.Cleaner._substitute_comments()=lxml.html.clean.Cleaner-class.html#_substitute_comments"><a title="lxml.html.clean.Cleaner._substitute_comments" class="py-name" href="#" onclick="return doclink('link-259', '_substitute_comments', 'link-259');">_substitute_comments</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'/\*.*?\*/'</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-260" class="py-name"><a title="lxml.html.builder.S" class="py-name" href="#" onclick="return doclink('link-260', 'S', 'link-22');">S</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt> </tt>
-<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line"> </tt>
-<a name="Cleaner._has_sneaky_javascript"></a><div id="Cleaner._has_sneaky_javascript-def"><a name="L484"></a><tt class="py-lineno">484</tt> <a class="py-toggle" href="#" id="Cleaner._has_sneaky_javascript-toggle" onclick="return toggle('Cleaner._has_sneaky_javascript');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#_has_sneaky_javascript">_has_sneaky_javascript</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">style</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Cleaner._has_sneaky_javascript-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner._has_sneaky_javascript-expanded"><a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
-<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line"><tt class="py-docstring">        Depending on the browser, stuff like ``e x p r e s s i o n(...)``</tt> </tt>
-<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line"><tt class="py-docstring">        can get interpreted, or ``expre/* stuff */ssion(...)``.  This</tt> </tt>
-<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line"><tt class="py-docstring">        checks for attempt to do stuff like this.</tt> </tt>
-<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line"><tt class="py-docstring">        Typically the response will be to kill the entire style; if you</tt> </tt>
-<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line"><tt class="py-docstring">        have just a bit of Javascript in the style another rule will catch</tt> </tt>
-<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line"><tt class="py-docstring">        that and remove only the Javascript from the style; this catches</tt> </tt>
-<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line"><tt class="py-docstring">        more sneaky attempts.</tt> </tt>
-<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
-<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line">        <tt id="link-261" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-261', 'style', 'link-46');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-262" class="py-name"><a title="lxml.html.clean.Cleaner._substitute_comments" class="py-name" href="#" onclick="return doclink('link-262', '_substitute_comments', 'link-259');">_substitute_comments</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-263" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-263', 'style', 'link-46');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line">        <tt id="link-264" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-264', 'style', 'link-46');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-265" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-265', 'style', 'link-46');">style</a></tt><tt class="py-op">.</tt><tt id="link-266" 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-266', 'replace', 'link-266');">replace</a></tt><tt class="py-op">(</tt><tt class="py-string">'\\'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
-<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line">        <tt id="link-267" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-267', 'style', 'link-46');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-268" class="py-name"><a title="lxml.html.clean._substitute_whitespace" class="py-name" href="#" onclick="return doclink('link-268', '_substitute_whitespace', 'link-32');">_substitute_whitespace</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-269" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-269', 'style', 'link-46');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line">        <tt id="link-270" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-270', 'style', 'link-46');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-271" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-271', 'style', 'link-46');">style</a></tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'javascript:'</tt> <tt class="py-keyword">in</tt> <tt id="link-272" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-272', 'style', 'link-46');">style</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
-<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'expression('</tt> <tt class="py-keyword">in</tt> <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-46');">style</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
-<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
-</div><a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line"> </tt>
-<a name="Cleaner.clean_html"></a><div id="Cleaner.clean_html-def"><a name="L505"></a><tt class="py-lineno">505</tt> <a class="py-toggle" href="#" id="Cleaner.clean_html-toggle" onclick="return toggle('Cleaner.clean_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#clean_html">clean_html</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">html</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Cleaner.clean_html-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner.clean_html-expanded"><a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line">        <tt class="py-name">result_type</tt> <tt class="py-op">=</tt> <tt id="link-274" 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-274', 'type', 'link-274');">type</a></tt><tt class="py-op">(</tt><tt id="link-275" class="py-name"><a title="lxml.html
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-258', 'etree', 'link-3');">etree</a></tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-259', 'Comment', 'link-153');">Comment</a></tt><tt class="py-op">)</tt>                 </tt>
+</div><a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line"> </tt>
+<a name="Cleaner._kill_elements"></a><div id="Cleaner._kill_elements-def"><a name="L475"></a><tt class="py-lineno">475</tt> <a class="py-toggle" href="#" id="Cleaner._kill_elements-toggle" onclick="return toggle('Cleaner._kill_elements');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#_kill_elements">_kill_elements</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">doc</tt><tt class="py-op">,</tt> <tt class="py-param">condition</tt><tt class="py-op">,</tt> <tt class="py-param">iterate</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="Cleaner._kill_elements-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner._kill_elements-expanded"><a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">        <tt class="py-name">bad</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-260" class="py-name"><a title="lxml.etree._Element.iter
+lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-260', 'iter', 'link-84');">iter</a></tt><tt class="py-op">(</tt><tt class="py-name">iterate</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">condition</tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</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">bad</tt><tt class="py-op">.</tt><tt id="link-261" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-261', 'append', 'link-206');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">bad</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">el</tt><tt class="py-op">.</tt><tt id="link-262" class="py-name"><a title="lxml.html.HtmlMixin.drop_tree" class="py-name" href="#" onclick="return doclink('link-262', 'drop_tree', 'link-141');">drop_tree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line"> </tt>
+<a name="Cleaner._remove_javascript_link"></a><div id="Cleaner._remove_javascript_link-def"><a name="L483"></a><tt class="py-lineno">483</tt> <a class="py-toggle" href="#" id="Cleaner._remove_javascript_link-toggle" onclick="return toggle('Cleaner._remove_javascript_link');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#_remove_javascript_link">_remove_javascript_link</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">link</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Cleaner._remove_javascript_link-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner._remove_javascript_link-expanded"><a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line">        <tt class="py-comment"># links like "j a v a s c r i p t:" might be interpreted in IE</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line">        <tt class="py-name">new</tt> <tt class="py-op">=</tt> <tt id="link-263" class="py-name"><a title="lxml.html.clean._substitute_whitespace" class="py-name" href="#" onclick="return doclink('link-263', '_substitute_whitespace', 'link-32');">_substitute_whitespace</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">link</tt><tt class="py-op">)</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-264" class="py-name" targets="Function lxml.html.clean._is_javascript_scheme()=lxml.html.clean-module.html#_is_javascript_scheme"><a title="lxml.html.clean._is_javascript_scheme" class="py-name" href="#" onclick="return doclink('link-264', '_is_javascript_scheme', 'link-264');">_is_javascript_scheme</a></tt><tt class="py-op">(</tt><tt class="py-name">new</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line">            <tt class="py-comment"># FIXME: should this be None to delete?</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">link</tt> </tt>
+</div><a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line"> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line">    <tt id="link-265" class="py-name" targets="Method lxml.html.clean.Cleaner._substitute_comments()=lxml.html.clean.Cleaner-class.html#_substitute_comments"><a title="lxml.html.clean.Cleaner._substitute_comments" class="py-name" href="#" onclick="return doclink('link-265', '_substitute_comments', 'link-265');">_substitute_comments</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'/\*.*?\*/'</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-266" class="py-name"><a title="lxml.html.builder.S" class="py-name" href="#" onclick="return doclink('link-266', 'S', 'link-22');">S</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line"> </tt>
+<a name="Cleaner._has_sneaky_javascript"></a><div id="Cleaner._has_sneaky_javascript-def"><a name="L493"></a><tt class="py-lineno">493</tt> <a class="py-toggle" href="#" id="Cleaner._has_sneaky_javascript-toggle" onclick="return toggle('Cleaner._has_sneaky_javascript');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#_has_sneaky_javascript">_has_sneaky_javascript</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">style</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Cleaner._has_sneaky_javascript-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner._has_sneaky_javascript-expanded"><a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line"><tt class="py-docstring">        Depending on the browser, stuff like ``e x p r e s s i o n(...)``</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line"><tt class="py-docstring">        can get interpreted, or ``expre/* stuff */ssion(...)``.  This</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line"><tt class="py-docstring">        checks for attempt to do stuff like this.</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line"><tt class="py-docstring">        Typically the response will be to kill the entire style; if you</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line"><tt class="py-docstring">        have just a bit of Javascript in the style another rule will catch</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line"><tt class="py-docstring">        that and remove only the Javascript from the style; this catches</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line"><tt class="py-docstring">        more sneaky attempts.</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line">        <tt id="link-267" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-267', 'style', 'link-46');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-268" class="py-name"><a title="lxml.html.clean.Cleaner._substitute_comments" class="py-name" href="#" onclick="return doclink('link-268', '_substitute_comments', 'link-265');">_substitute_comments</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-269" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-269', 'style', 'link-46');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line">        <tt id="link-270" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-270', 'style', 'link-46');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-271" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-271', 'style', 'link-46');">style</a></tt><tt class="py-op">.</tt><tt id="link-272" 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-272', 'replace', 'link-272');">replace</a></tt><tt class="py-op">(</tt><tt class="py-string">'\\'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</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-46');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-274" class="py-name"><a title="lxml.html.clean._substitute_whitespace" class="py-name" href="#" onclick="return doclink('link-274', '_substitute_whitespace', 'link-32');">_substitute_whitespace</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-275" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-275', 'style', 'link-46');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line">        <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-46');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-277" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-277', 'style', 'link-46');">style</a></tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'javascript:'</tt> <tt class="py-keyword">in</tt> <tt id="link-278" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-278', 'style', 'link-46');">style</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'expression('</tt> <tt class="py-keyword">in</tt> <tt id="link-279" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-279', 'style', 'link-46');">style</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line"> </tt>
+<a name="Cleaner.clean_html"></a><div id="Cleaner.clean_html-def"><a name="L514"></a><tt class="py-lineno">514</tt> <a class="py-toggle" href="#" id="Cleaner.clean_html-toggle" onclick="return toggle('Cleaner.clean_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean.Cleaner-class.html#clean_html">clean_html</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">html</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Cleaner.clean_html-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Cleaner.clean_html-expanded"><a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line">        <tt class="py-name">result_type</tt> <tt class="py-op">=</tt> <tt id="link-280" 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-280', 'type', 'link-280');">type</a></tt><tt class="py-op">(</tt><tt id="link-281" class="py-name"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-275', 'html', 'link-5');">html</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-276" class="py-name"><a title="lxml.html
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-281', 'html', 'link-5');">html</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-282" class="py-name"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-276', 'html', 'link-5');">html</a></tt><tt class="py-op">,</tt> <tt id="link-277" class="py-name"><a title="lxml.html.clean.basestring" class="py-name" href="#" onclick="return doclink('link-277', 'basestring', 'link-18');">basestring</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">            <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-278" class="py-name"><a title="lxml.etree.fromstring
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-282', 'html', 'link-5');">html</a></tt><tt class="py-op">,</tt> <tt id="link-283" class="py-name"><a title="lxml.html.clean.basestring" class="py-name" href="#" onclick="return doclink('link-283', 'basestring', 'link-18');">basestring</a></tt><tt class="py-op">)</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">doc</tt> <tt class="py-op">=</tt> <tt id="link-284" class="py-name"><a title="lxml.etree.fromstring
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
-lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-278', 'fromstring', 'link-9');">fromstring</a></tt><tt class="py-op">(</tt><tt id="link-279" class="py-name"><a title="lxml.html
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-284', 'fromstring', 'link-9');">fromstring</a></tt><tt class="py-op">(</tt><tt id="link-285" class="py-name"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-279', 'html', 'link-5');">html</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line">            <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-280" class="py-name"><a title="lxml.etree.PyErrorLog.copy
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-285', 'html', 'link-5');">html</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line">        <tt class="py-keyword">else</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">doc</tt> <tt class="py-op">=</tt> <tt id="link-286" class="py-name"><a title="lxml.etree.PyErrorLog.copy
 lxml.etree._BaseErrorLog.copy
 lxml.etree._ErrorLog.copy
 lxml.etree._IDDict.copy
 lxml.etree._ListErrorLog.copy
-lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-280', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt id="link-281" class="py-name"><a title="lxml.html
+lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-286', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt id="link-287" class="py-name"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-281', 'html', 'link-5');">html</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
-<a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">_transform_result</tt><tt class="py-op">(</tt><tt class="py-name">result_type</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line"> </tt>
-<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line"><tt id="link-282" class="py-name" targets="Module lxml.html.clean=lxml.html.clean-module.html,Variable lxml.html.clean.clean=lxml.html.clean-module.html#clean"><a title="lxml.html.clean
-lxml.html.clean.clean" class="py-name" href="#" onclick="return doclink('link-282', 'clean', 'link-282');">clean</a></tt> <tt class="py-op">=</tt> <tt id="link-283" class="py-name" targets="Class lxml.html.clean.Cleaner=lxml.html.clean.Cleaner-class.html"><a title="lxml.html.clean.Cleaner" class="py-name" href="#" onclick="return doclink('link-283', 'Cleaner', 'link-283');">Cleaner</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line"><tt id="link-284" class="py-name" targets="Method lxml.html.clean.Cleaner.clean_html()=lxml.html.clean.Cleaner-class.html#clean_html,Function lxml.html.clean.clean_html()=lxml.html.clean-module.html#clean_html"><a title="lxml.html.clean.Cleaner.clean_html
-lxml.html.clean.clean_html" class="py-name" href="#" onclick="return doclink('link-284', 'clean_html', 'link-284');">clean_html</a></tt> <tt class="py-op">=</tt> <tt id="link-285" class="py-name"><a title="lxml.html.clean
-lxml.html.clean.clean" class="py-name" href="#" onclick="return doclink('link-285', 'clean', 'link-282');">clean</a></tt><tt class="py-op">.</tt><tt id="link-286" class="py-name"><a title="lxml.html.clean.Cleaner.clean_html
-lxml.html.clean.clean_html" class="py-name" href="#" onclick="return doclink('link-286', 'clean_html', 'link-284');">clean_html</a></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-comment">############################################################</tt> </tt>
-<a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line"><tt class="py-comment">## Autolinking</tt> </tt>
-<a name="L519"></a><tt class="py-lineno">519</tt>  <tt class="py-line"><tt class="py-comment">############################################################</tt> </tt>
-<a name="L520"></a><tt class="py-lineno">520</tt>  <tt class="py-line"> </tt>
-<a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line"><tt id="link-287" class="py-name" targets="Variable lxml.html.clean._link_regexes=lxml.html.clean-module.html#_link_regexes"><a title="lxml.html.clean._link_regexes" class="py-name" href="#" onclick="return doclink('link-287', '_link_regexes', 'link-287');">_link_regexes</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
-<a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line">    <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'(?P&lt;body&gt;https?://(?P&lt;host&gt;[a-z0-9._-]+)(?:/[/\-_.,a-z0-9%&amp;?;=~]*)?(?:\([/\-_.,a-z0-9%&amp;?;=~]*\))?)'</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-288" class="py-name"><a title="lxml.html.builder.I" class="py-name" href="#" onclick="return doclink('link-288', 'I', 'link-23');">I</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line">    <tt class="py-comment"># This is conservative, but autolinking can be a bit conservative:</tt> </tt>
-<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line">    <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'mailto:(?P&lt;body&gt;[a-z0-9._-]+@(?P&lt;host&gt;[a-z0-9_._]+[a-z]))'</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-289" class="py-name"><a title="lxml.html.builder.I" class="py-name" href="#" onclick="return doclink('link-289', 'I', 'link-23');">I</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line">    <tt class="py-op">]</tt> </tt>
-<a name="L526"></a><tt class="py-lineno">526</tt>  <tt class="py-line"> </tt>
-<a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line"><tt id="link-290" class="py-name" targets="Variable lxml.html.clean._avoid_elements=lxml.html.clean-module.html#_avoid_elements"><a title="lxml.html.clean._avoid_elements" class="py-name" href="#" onclick="return doclink('link-290', '_avoid_elements', 'link-290');">_avoid_elements</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'textarea'</tt><tt class="py-op">,</tt> <tt class="py-string">'pre'</tt><tt class="py-op">,</tt> <tt class="py-string">'code'</tt><tt class="py-op">,</tt> <tt class="py-string">'head'</tt><tt class="py-op">,</tt> <tt class="py-string">'select'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">]</tt> </tt>
-<a name="L528"></a><tt class="py-lineno">528</tt>  <tt class="py-line"> </tt>
-<a name="L529"></a><tt class="py-lineno">529</tt>  <tt class="py-line"><tt id="link-291" class="py-name" targets="Variable lxml.html.clean._avoid_hosts=lxml.html.clean-module.html#_avoid_hosts"><a title="lxml.html.clean._avoid_hosts" class="py-name" href="#" onclick="return doclink('link-291', '_avoid_hosts', 'link-291');">_avoid_hosts</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
-<a name="L530"></a><tt class="py-lineno">530</tt>  <tt class="py-line">    <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'^localhost'</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-292" class="py-name"><a title="lxml.html.builder.I" class="py-name" href="#" onclick="return doclink('link-292', 'I', 'link-23');">I</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line">    <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'\bexample\.(?:com|org|net)$'</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-293" class="py-name"><a title="lxml.html.builder.I" class="py-name" href="#" onclick="return doclink('link-293', 'I', 'link-23');">I</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line">    <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'^127\.0\.0\.1$'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L533"></a><tt class="py-lineno">533</tt>  <tt class="py-line">    <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 id="link-294" class="py-name" targets="Variable lxml.html.clean._avoid_classes=lxml.html.clean-module.html#_avoid_classes"><a title="lxml.html.clean._avoid_classes" class="py-name" href="#" onclick="return doclink('link-294', '_avoid_classes', 'link-294');">_avoid_classes</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'nolink'</tt><tt class="py-op">]</tt> </tt>
-<a name="L536"></a><tt class="py-lineno">536</tt>  <tt class="py-line"> </tt>
-<a name="autolink"></a><div id="autolink-def"><a name="L537"></a><tt class="py-lineno">537</tt> <a class="py-toggle" href="#" id="autolink-toggle" onclick="return toggle('autolink');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean-module.html#autolink">autolink</a><tt class="py-op">(</tt><tt class="py-param">el</tt><tt class="py-op">,</tt> <tt class="py-param">link_regexes</tt><tt class="py-op">=</tt><tt id="link-295" class="py-name"><a title="lxml.html.clean._link_regexes" class="py-name" href="#" onclick="return doclink('link-295', '_link_regexes', 'link-287');">_link_regexes</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L538"></a><tt class="py-lineno">538</tt>  <tt class="py-line">             <tt class="py-param">avoid_elements</tt><tt class="py-op">=</tt><tt id="link-296" class="py-name"><a title="lxml.html.clean._avoid_elements" class="py-name" href="#" onclick="return doclink('link-296', '_avoid_elements', 'link-290');">_avoid_elements</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L539"></a><tt class="py-lineno">539</tt>  <tt class="py-line">             <tt class="py-param">avoid_hosts</tt><tt class="py-op">=</tt><tt id="link-297" class="py-name"><a title="lxml.html.clean._avoid_hosts" class="py-name" href="#" onclick="return doclink('link-297', '_avoid_hosts', 'link-291');">_avoid_hosts</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L540"></a><tt class="py-lineno">540</tt>  <tt class="py-line">             <tt class="py-param">avoid_classes</tt><tt class="py-op">=</tt><tt id="link-298" class="py-name"><a title="lxml.html.clean._avoid_classes" class="py-name" href="#" onclick="return doclink('link-298', '_avoid_classes', 'link-294');">_avoid_classes</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="autolink-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="autolink-expanded"><a name="L541"></a><tt class="py-lineno">541</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
-<a name="L542"></a><tt class="py-lineno">542</tt>  <tt class="py-line"><tt class="py-docstring">    Turn any URLs into links.</tt> </tt>
-<a name="L543"></a><tt class="py-lineno">543</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L544"></a><tt class="py-lineno">544</tt>  <tt class="py-line"><tt class="py-docstring">    It will search for links identified by the given regular</tt> </tt>
-<a name="L545"></a><tt class="py-lineno">545</tt>  <tt class="py-line"><tt class="py-docstring">    expressions (by default mailto and http(s) links).</tt> </tt>
-<a name="L546"></a><tt class="py-lineno">546</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L547"></a><tt class="py-lineno">547</tt>  <tt class="py-line"><tt class="py-docstring">    It won't link text in an element in avoid_elements, or an element</tt> </tt>
-<a name="L548"></a><tt class="py-lineno">548</tt>  <tt class="py-line"><tt class="py-docstring">    with a class in avoid_classes.  It won't link to anything with a</tt> </tt>
-<a name="L549"></a><tt class="py-lineno">549</tt>  <tt class="py-line"><tt class="py-docstring">    host that matches one of the regular expressions in avoid_hosts</tt> </tt>
-<a name="L550"></a><tt class="py-lineno">550</tt>  <tt class="py-line"><tt class="py-docstring">    (default localhost and 127.0.0.1).</tt> </tt>
-<a name="L551"></a><tt class="py-lineno">551</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L552"></a><tt class="py-lineno">552</tt>  <tt class="py-line"><tt class="py-docstring">    If you pass in an element, the element's tail will not be</tt> </tt>
-<a name="L553"></a><tt class="py-lineno">553</tt>  <tt class="py-line"><tt class="py-docstring">    substituted, only the contents of the element.</tt> </tt>
-<a name="L554"></a><tt class="py-lineno">554</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L555"></a><tt class="py-lineno">555</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-299" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-287', 'html', 'link-5');">html</a></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">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">_transform_result</tt><tt class="py-op">(</tt><tt class="py-name">result_type</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line"> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line"><tt id="link-288" class="py-name" targets="Module lxml.html.clean=lxml.html.clean-module.html,Variable lxml.html.clean.clean=lxml.html.clean-module.html#clean"><a title="lxml.html.clean
+lxml.html.clean.clean" class="py-name" href="#" onclick="return doclink('link-288', 'clean', 'link-288');">clean</a></tt> <tt class="py-op">=</tt> <tt id="link-289" class="py-name" targets="Class lxml.html.clean.Cleaner=lxml.html.clean.Cleaner-class.html"><a title="lxml.html.clean.Cleaner" class="py-name" href="#" onclick="return doclink('link-289', 'Cleaner', 'link-289');">Cleaner</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line"><tt id="link-290" class="py-name" targets="Method lxml.html.clean.Cleaner.clean_html()=lxml.html.clean.Cleaner-class.html#clean_html,Function lxml.html.clean.clean_html()=lxml.html.clean-module.html#clean_html"><a title="lxml.html.clean.Cleaner.clean_html
+lxml.html.clean.clean_html" class="py-name" href="#" onclick="return doclink('link-290', 'clean_html', 'link-290');">clean_html</a></tt> <tt class="py-op">=</tt> <tt id="link-291" class="py-name"><a title="lxml.html.clean
+lxml.html.clean.clean" class="py-name" href="#" onclick="return doclink('link-291', 'clean', 'link-288');">clean</a></tt><tt class="py-op">.</tt><tt id="link-292" class="py-name"><a title="lxml.html.clean.Cleaner.clean_html
+lxml.html.clean.clean_html" class="py-name" href="#" onclick="return doclink('link-292', 'clean_html', 'link-290');">clean_html</a></tt> </tt>
+<a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line"> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt>  <tt class="py-line"><tt class="py-comment">############################################################</tt> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line"><tt class="py-comment">## Autolinking</tt> </tt>
+<a name="L528"></a><tt class="py-lineno">528</tt>  <tt class="py-line"><tt class="py-comment">############################################################</tt> </tt>
+<a name="L529"></a><tt class="py-lineno">529</tt>  <tt class="py-line"> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt>  <tt class="py-line"><tt id="link-293" class="py-name" targets="Variable lxml.html.clean._link_regexes=lxml.html.clean-module.html#_link_regexes"><a title="lxml.html.clean._link_regexes" class="py-name" href="#" onclick="return doclink('link-293', '_link_regexes', 'link-293');">_link_regexes</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
+<a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line">    <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'(?P&lt;body&gt;https?://(?P&lt;host&gt;[a-z0-9._-]+)(?:/[/\-_.,a-z0-9%&amp;?;=~]*)?(?:\([/\-_.,a-z0-9%&amp;?;=~]*\))?)'</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-294" class="py-name"><a title="lxml.html.builder.I" class="py-name" href="#" onclick="return doclink('link-294', 'I', 'link-23');">I</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line">    <tt class="py-comment"># This is conservative, but autolinking can be a bit conservative:</tt> </tt>
+<a name="L533"></a><tt class="py-lineno">533</tt>  <tt class="py-line">    <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'mailto:(?P&lt;body&gt;[a-z0-9._-]+@(?P&lt;host&gt;[a-z0-9_._]+[a-z]))'</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-295" class="py-name"><a title="lxml.html.builder.I" class="py-name" href="#" onclick="return doclink('link-295', 'I', 'link-23');">I</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L534"></a><tt class="py-lineno">534</tt>  <tt class="py-line">    <tt class="py-op">]</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt>  <tt class="py-line"> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt>  <tt class="py-line"><tt id="link-296" class="py-name" targets="Variable lxml.html.clean._avoid_elements=lxml.html.clean-module.html#_avoid_elements"><a title="lxml.html.clean._avoid_elements" class="py-name" href="#" onclick="return doclink('link-296', '_avoid_elements', 'link-296');">_avoid_elements</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'textarea'</tt><tt class="py-op">,</tt> <tt class="py-string">'pre'</tt><tt class="py-op">,</tt> <tt class="py-string">'code'</tt><tt class="py-op">,</tt> <tt class="py-string">'head'</tt><tt class="py-op">,</tt> <tt class="py-string">'select'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</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 id="link-297" class="py-name" targets="Variable lxml.html.clean._avoid_hosts=lxml.html.clean-module.html#_avoid_hosts"><a title="lxml.html.clean._avoid_hosts" class="py-name" href="#" onclick="return doclink('link-297', '_avoid_hosts', 'link-297');">_avoid_hosts</a></tt> <tt class="py-op">=</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">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'^localhost'</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-298" class="py-name"><a title="lxml.html.builder.I" class="py-name" href="#" onclick="return doclink('link-298', 'I', 'link-23');">I</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L540"></a><tt class="py-lineno">540</tt>  <tt class="py-line">    <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'\bexample\.(?:com|org|net)$'</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-299" class="py-name"><a title="lxml.html.builder.I" class="py-name" href="#" onclick="return doclink('link-299', 'I', 'link-23');">I</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L541"></a><tt class="py-lineno">541</tt>  <tt class="py-line">    <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'^127\.0\.0\.1$'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L542"></a><tt class="py-lineno">542</tt>  <tt class="py-line">    <tt class="py-op">]</tt> </tt>
+<a name="L543"></a><tt class="py-lineno">543</tt>  <tt class="py-line"> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt>  <tt class="py-line"><tt id="link-300" class="py-name" targets="Variable lxml.html.clean._avoid_classes=lxml.html.clean-module.html#_avoid_classes"><a title="lxml.html.clean._avoid_classes" class="py-name" href="#" onclick="return doclink('link-300', '_avoid_classes', 'link-300');">_avoid_classes</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'nolink'</tt><tt class="py-op">]</tt> </tt>
+<a name="L545"></a><tt class="py-lineno">545</tt>  <tt class="py-line"> </tt>
+<a name="autolink"></a><div id="autolink-def"><a name="L546"></a><tt class="py-lineno">546</tt> <a class="py-toggle" href="#" id="autolink-toggle" onclick="return toggle('autolink');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean-module.html#autolink">autolink</a><tt class="py-op">(</tt><tt class="py-param">el</tt><tt class="py-op">,</tt> <tt class="py-param">link_regexes</tt><tt class="py-op">=</tt><tt id="link-301" class="py-name"><a title="lxml.html.clean._link_regexes" class="py-name" href="#" onclick="return doclink('link-301', '_link_regexes', 'link-293');">_link_regexes</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt>  <tt class="py-line">             <tt class="py-param">avoid_elements</tt><tt class="py-op">=</tt><tt id="link-302" class="py-name"><a title="lxml.html.clean._avoid_elements" class="py-name" href="#" onclick="return doclink('link-302', '_avoid_elements', 'link-296');">_avoid_elements</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L548"></a><tt class="py-lineno">548</tt>  <tt class="py-line">             <tt class="py-param">avoid_hosts</tt><tt class="py-op">=</tt><tt id="link-303" class="py-name"><a title="lxml.html.clean._avoid_hosts" class="py-name" href="#" onclick="return doclink('link-303', '_avoid_hosts', 'link-297');">_avoid_hosts</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt>  <tt class="py-line">             <tt class="py-param">avoid_classes</tt><tt class="py-op">=</tt><tt id="link-304" class="py-name"><a title="lxml.html.clean._avoid_classes" class="py-name" href="#" onclick="return doclink('link-304', '_avoid_classes', 'link-300');">_avoid_classes</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="autolink-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="autolink-expanded"><a name="L550"></a><tt class="py-lineno">550</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L551"></a><tt class="py-lineno">551</tt>  <tt class="py-line"><tt class="py-docstring">    Turn any URLs into links.</tt> </tt>
+<a name="L552"></a><tt class="py-lineno">552</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L553"></a><tt class="py-lineno">553</tt>  <tt class="py-line"><tt class="py-docstring">    It will search for links identified by the given regular</tt> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt>  <tt class="py-line"><tt class="py-docstring">    expressions (by default mailto and http(s) links).</tt> </tt>
+<a name="L555"></a><tt class="py-lineno">555</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt>  <tt class="py-line"><tt class="py-docstring">    It won't link text in an element in avoid_elements, or an element</tt> </tt>
+<a name="L557"></a><tt class="py-lineno">557</tt>  <tt class="py-line"><tt class="py-docstring">    with a class in avoid_classes.  It won't link to anything with a</tt> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt>  <tt class="py-line"><tt class="py-docstring">    host that matches one of the regular expressions in avoid_hosts</tt> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt>  <tt class="py-line"><tt class="py-docstring">    (default localhost and 127.0.0.1).</tt> </tt>
+<a name="L560"></a><tt class="py-lineno">560</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt>  <tt class="py-line"><tt class="py-docstring">    If you pass in an element, the element's tail will not be</tt> </tt>
+<a name="L562"></a><tt class="py-lineno">562</tt>  <tt class="py-line"><tt class="py-docstring">    substituted, only the contents of the element.</tt> </tt>
+<a name="L563"></a><tt class="py-lineno">563</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L564"></a><tt class="py-lineno">564</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-305" 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-299', 'tag', 'link-81');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">avoid_elements</tt><tt class="py-op">:</tt> </tt>
-<a name="L556"></a><tt class="py-lineno">556</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
-<a name="L557"></a><tt class="py-lineno">557</tt>  <tt class="py-line">    <tt class="py-name">class_name</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-305', 'tag', 'link-85');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">avoid_elements</tt><tt class="py-op">:</tt> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L566"></a><tt class="py-lineno">566</tt>  <tt class="py-line">    <tt class="py-name">class_name</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-306" 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-300', 'get', 'link-127');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'class'</tt><tt class="py-op">)</tt> </tt>
-<a name="L558"></a><tt class="py-lineno">558</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">class_name</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">class_name</tt> <tt class="py-op">=</tt> <tt class="py-name">class_name</tt><tt class="py-op">.</tt><tt class="py-name">split</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 class="py-keyword">for</tt> <tt class="py-name">match_class</tt> <tt class="py-keyword">in</tt> <tt class="py-name">avoid_classes</tt><tt class="py-op">:</tt> </tt>
-<a name="L561"></a><tt class="py-lineno">561</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">match_class</tt> <tt class="py-keyword">in</tt> <tt class="py-name">class_name</tt><tt class="py-op">:</tt> </tt>
-<a name="L562"></a><tt class="py-lineno">562</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> </tt>
-<a name="L563"></a><tt class="py-lineno">563</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">list</tt><tt class="py-op">(</tt><tt class="py-name">el</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 id="link-301" class="py-name" targets="Function lxml.html.clean.autolink()=lxml.html.clean-module.html#autolink"><a title="lxml.html.clean.autolink" class="py-name" href="#" onclick="return doclink('link-301', 'autolink', 'link-301');">autolink</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">link_regexes</tt><tt class="py-op">=</tt><tt class="py-name">link_regexes</tt><tt class="py-op">,</tt> </tt>
-<a name="L565"></a><tt class="py-lineno">565</tt>  <tt class="py-line">                 <tt class="py-name">avoid_elements</tt><tt class="py-op">=</tt><tt class="py-name">avoid_elements</tt><tt class="py-op">,</tt> </tt>
-<a name="L566"></a><tt class="py-lineno">566</tt>  <tt class="py-line">                 <tt class="py-name">avoid_hosts</tt><tt class="py-op">=</tt><tt class="py-name">avoid_hosts</tt><tt class="py-op">,</tt> </tt>
-<a name="L567"></a><tt class="py-lineno">567</tt>  <tt class="py-line">                 <tt class="py-name">avoid_classes</tt><tt class="py-op">=</tt><tt class="py-name">avoid_classes</tt><tt class="py-op">)</tt> </tt>
-<a name="L568"></a><tt class="py-lineno">568</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-302" 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-302', 'tail', 'link-302');">tail</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L569"></a><tt class="py-lineno">569</tt>  <tt class="py-line">            <tt id="link-303" class="py-name"><a title="lxml.etree.QName.text
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-306', 'get', 'link-131');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'class'</tt><tt class="py-op">)</tt> </tt>
+<a name="L567"></a><tt class="py-lineno">567</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">class_name</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">class_name</tt> <tt class="py-op">=</tt> <tt class="py-name">class_name</tt><tt class="py-op">.</tt><tt class="py-name">split</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 class="py-keyword">for</tt> <tt class="py-name">match_class</tt> <tt class="py-keyword">in</tt> <tt class="py-name">avoid_classes</tt><tt class="py-op">:</tt> </tt>
+<a name="L570"></a><tt class="py-lineno">570</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">match_class</tt> <tt class="py-keyword">in</tt> <tt class="py-name">class_name</tt><tt class="py-op">:</tt> </tt>
+<a name="L571"></a><tt class="py-lineno">571</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> </tt>
+<a name="L572"></a><tt class="py-lineno">572</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">list</tt><tt class="py-op">(</tt><tt class="py-name">el</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 id="link-307" class="py-name" targets="Function lxml.html.clean.autolink()=lxml.html.clean-module.html#autolink"><a title="lxml.html.clean.autolink" class="py-name" href="#" onclick="return doclink('link-307', 'autolink', 'link-307');">autolink</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">link_regexes</tt><tt class="py-op">=</tt><tt class="py-name">link_regexes</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">avoid_elements</tt><tt class="py-op">=</tt><tt class="py-name">avoid_elements</tt><tt class="py-op">,</tt> </tt>
+<a name="L575"></a><tt class="py-lineno">575</tt>  <tt class="py-line">                 <tt class="py-name">avoid_hosts</tt><tt class="py-op">=</tt><tt class="py-name">avoid_hosts</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">avoid_classes</tt><tt class="py-op">=</tt><tt class="py-name">avoid_classes</tt><tt class="py-op">)</tt> </tt>
+<a name="L577"></a><tt class="py-lineno">577</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-308" 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-308', 'tail', 'link-308');">tail</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L578"></a><tt class="py-lineno">578</tt>  <tt class="py-line">            <tt id="link-309" 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-303', 'text', 'link-137');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">tail_children</tt> <tt class="py-op">=</tt> <tt id="link-304" class="py-name" targets="Function lxml.html.clean._link_text()=lxml.html.clean-module.html#_link_text"><a title="lxml.html.clean._link_text" class="py-name" href="#" onclick="return doclink('link-304', '_link_text', 'link-304');">_link_text</a></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">child</tt><tt class="py-op">.</tt><tt id="link-305" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-305', 'tail', 'link-302');">tail</a></tt><tt class="py-op">,</tt> <tt class="py-name">link_regexes</tt><tt class="py-op">,</tt> <tt class="py-name">avoid_hosts</tt><tt class="py-op">,</tt> <tt class="py-name">factory</tt><tt class="py-op">=</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-306" class="py-name" targets="Method lxml.etree._Element.makeelement()=lxml.etree._Element-class.html#makeelement,Method lxml.etree.iterparse.makeelement()=lxml.etree.iterparse-class.html#makeelement,Function lxml.tests.selftest2.makeelement()=lxml.tests.selftest2-module.html#makeelement"><a title="lxml.etree._Element.makeelement
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-309', 'text', 'link-142');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">tail_children</tt> <tt class="py-op">=</tt> <tt id="link-310" class="py-name" targets="Function lxml.html.clean._link_text()=lxml.html.clean-module.html#_link_text"><a title="lxml.html.clean._link_text" class="py-name" href="#" onclick="return doclink('link-310', '_link_text', 'link-310');">_link_text</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L579"></a><tt class="py-lineno">579</tt>  <tt class="py-line">                <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-311" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-311', 'tail', 'link-308');">tail</a></tt><tt class="py-op">,</tt> <tt class="py-name">link_regexes</tt><tt class="py-op">,</tt> <tt class="py-name">avoid_hosts</tt><tt class="py-op">,</tt> <tt class="py-name">factory</tt><tt class="py-op">=</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-312" class="py-name" targets="Method lxml.etree._Element.makeelement()=lxml.etree._Element-class.html#makeelement,Method lxml.etree.iterparse.makeelement()=lxml.etree.iterparse-class.html#makeelement,Function lxml.tests.selftest2.makeelement()=lxml.tests.selftest2-module.html#makeelement"><a title="lxml.etree._Element.makeelement
 lxml.etree.iterparse.makeelement
-lxml.tests.selftest2.makeelement" class="py-name" href="#" onclick="return doclink('link-306', 'makeelement', 'link-306');">makeelement</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-keyword">if</tt> <tt class="py-name">tail_children</tt><tt class="py-op">:</tt> </tt>
-<a name="L572"></a><tt class="py-lineno">572</tt>  <tt class="py-line">                <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-307" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-307', 'tail', 'link-302');">tail</a></tt> <tt class="py-op">=</tt> <tt id="link-308" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.makeelement" class="py-name" href="#" onclick="return doclink('link-312', 'makeelement', 'link-312');">makeelement</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L580"></a><tt class="py-lineno">580</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">tail_children</tt><tt class="py-op">:</tt> </tt>
+<a name="L581"></a><tt class="py-lineno">581</tt>  <tt class="py-line">                <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-313" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-313', 'tail', 'link-308');">tail</a></tt> <tt class="py-op">=</tt> <tt id="link-314" 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-308', 'text', 'link-137');">text</a></tt> </tt>
-<a name="L573"></a><tt class="py-lineno">573</tt>  <tt class="py-line">                <tt id="link-309" class="py-name" targets="Method lxml.etree._Element.index()=lxml.etree._Element-class.html#index"><a title="lxml.etree._Element.index" class="py-name" href="#" onclick="return doclink('link-309', 'index', 'link-309');">index</a></tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-310" class="py-name"><a title="lxml.etree._Element.index" class="py-name" href="#" onclick="return doclink('link-310', 'index', 'link-309');">index</a></tt><tt class="py-op">(</tt><tt class="py-name">child</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">el</tt><tt class="py-op">[</tt><tt id="link-311" class="py-name"><a title="lxml.etree._Element.index" class="py-name" href="#" onclick="return doclink('link-311', 'index', 'link-309');">index</a></tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt id="link-312" class="py-name"><a title="lxml.etree._Element.index" class="py-name" href="#" onclick="return doclink('link-312', 'index', 'link-309');">index</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-name">tail_children</tt> </tt>
-<a name="L575"></a><tt class="py-lineno">575</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-313" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-314', 'text', 'link-142');">text</a></tt> </tt>
+<a name="L582"></a><tt class="py-lineno">582</tt>  <tt class="py-line">                <tt id="link-315" class="py-name" targets="Method lxml.etree._Element.index()=lxml.etree._Element-class.html#index"><a title="lxml.etree._Element.index" class="py-name" href="#" onclick="return doclink('link-315', 'index', 'link-315');">index</a></tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-316" class="py-name"><a title="lxml.etree._Element.index" class="py-name" href="#" onclick="return doclink('link-316', 'index', 'link-315');">index</a></tt><tt class="py-op">(</tt><tt class="py-name">child</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">el</tt><tt class="py-op">[</tt><tt id="link-317" class="py-name"><a title="lxml.etree._Element.index" class="py-name" href="#" onclick="return doclink('link-317', 'index', 'link-315');">index</a></tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt id="link-318" class="py-name"><a title="lxml.etree._Element.index" class="py-name" href="#" onclick="return doclink('link-318', 'index', 'link-315');">index</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-name">tail_children</tt> </tt>
+<a name="L584"></a><tt class="py-lineno">584</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-319" 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-313', 'text', 'link-137');">text</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L576"></a><tt class="py-lineno">576</tt>  <tt class="py-line">        <tt id="link-314" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-319', 'text', 'link-142');">text</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L585"></a><tt class="py-lineno">585</tt>  <tt class="py-line">        <tt id="link-320" 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-314', 'text', 'link-137');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">pre_children</tt> <tt class="py-op">=</tt> <tt id="link-315" class="py-name"><a title="lxml.html.clean._link_text" class="py-name" href="#" onclick="return doclink('link-315', '_link_text', 'link-304');">_link_text</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L577"></a><tt class="py-lineno">577</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-316" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-320', 'text', 'link-142');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">pre_children</tt> <tt class="py-op">=</tt> <tt id="link-321" class="py-name"><a title="lxml.html.clean._link_text" class="py-name" href="#" onclick="return doclink('link-321', '_link_text', 'link-310');">_link_text</a></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">el</tt><tt class="py-op">.</tt><tt id="link-322" 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-316', 'text', 'link-137');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">link_regexes</tt><tt class="py-op">,</tt> <tt class="py-name">avoid_hosts</tt><tt class="py-op">,</tt> <tt class="py-name">factory</tt><tt class="py-op">=</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-317" class="py-name"><a title="lxml.etree._Element.makeelement
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-322', 'text', 'link-142');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">link_regexes</tt><tt class="py-op">,</tt> <tt class="py-name">avoid_hosts</tt><tt class="py-op">,</tt> <tt class="py-name">factory</tt><tt class="py-op">=</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-323" class="py-name"><a title="lxml.etree._Element.makeelement
 lxml.etree.iterparse.makeelement
-lxml.tests.selftest2.makeelement" class="py-name" href="#" onclick="return doclink('link-317', 'makeelement', 'link-306');">makeelement</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L578"></a><tt class="py-lineno">578</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">pre_children</tt><tt class="py-op">:</tt> </tt>
-<a name="L579"></a><tt class="py-lineno">579</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-318" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.makeelement" class="py-name" href="#" onclick="return doclink('link-323', 'makeelement', 'link-312');">makeelement</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L587"></a><tt class="py-lineno">587</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">pre_children</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">el</tt><tt class="py-op">.</tt><tt id="link-324" 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-318', 'text', 'link-137');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-319" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-324', 'text', 'link-142');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-325" 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-319', 'text', 'link-137');">text</a></tt> </tt>
-<a name="L580"></a><tt class="py-lineno">580</tt>  <tt class="py-line">            <tt class="py-name">el</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 class="py-name">pre_children</tt> </tt>
-</div><a name="L581"></a><tt class="py-lineno">581</tt>  <tt class="py-line"> </tt>
-<a name="_link_text"></a><div id="_link_text-def"><a name="L582"></a><tt class="py-lineno">582</tt> <a class="py-toggle" href="#" id="_link_text-toggle" onclick="return toggle('_link_text');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean-module.html#_link_text">_link_text</a><tt class="py-op">(</tt><tt class="py-param">text</tt><tt class="py-op">,</tt> <tt class="py-param">link_regexes</tt><tt class="py-op">,</tt> <tt class="py-param">avoid_hosts</tt><tt class="py-op">,</tt> <tt class="py-param">factory</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_link_text-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_link_text-expanded"><a name="L583"></a><tt class="py-lineno">583</tt>  <tt class="py-line">    <tt class="py-name">leading_text</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-<a name="L584"></a><tt class="py-lineno">584</tt>  <tt class="py-line">    <tt id="link-320" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-320', 'links', 'link-47');">links</a></tt> <tt class="py-op">=</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">last_pos</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-<a name="L586"></a><tt class="py-lineno">586</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
-<a name="L587"></a><tt class="py-lineno">587</tt>  <tt class="py-line">        <tt class="py-name">best_match</tt><tt class="py-op">,</tt> <tt class="py-name">best_pos</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt> </tt>
-<a name="L588"></a><tt class="py-lineno">588</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">regex</tt> <tt class="py-keyword">in</tt> <tt class="py-name">link_regexes</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">regex_pos</tt> <tt class="py-op">=</tt> <tt class="py-name">last_pos</tt> </tt>
-<a name="L590"></a><tt class="py-lineno">590</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-number">1</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">match</tt> <tt class="py-op">=</tt> <tt class="py-name">regex</tt><tt class="py-op">.</tt><tt class="py-name">search</tt><tt class="py-op">(</tt><tt id="link-321" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-325', 'text', 'link-142');">text</a></tt> </tt>
+<a name="L589"></a><tt class="py-lineno">589</tt>  <tt class="py-line">            <tt class="py-name">el</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 class="py-name">pre_children</tt> </tt>
+</div><a name="L590"></a><tt class="py-lineno">590</tt>  <tt class="py-line"> </tt>
+<a name="_link_text"></a><div id="_link_text-def"><a name="L591"></a><tt class="py-lineno">591</tt> <a class="py-toggle" href="#" id="_link_text-toggle" onclick="return toggle('_link_text');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean-module.html#_link_text">_link_text</a><tt class="py-op">(</tt><tt class="py-param">text</tt><tt class="py-op">,</tt> <tt class="py-param">link_regexes</tt><tt class="py-op">,</tt> <tt class="py-param">avoid_hosts</tt><tt class="py-op">,</tt> <tt class="py-param">factory</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_link_text-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_link_text-expanded"><a name="L592"></a><tt class="py-lineno">592</tt>  <tt class="py-line">    <tt class="py-name">leading_text</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L593"></a><tt class="py-lineno">593</tt>  <tt class="py-line">    <tt id="link-326" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-326', 'links', 'link-48');">links</a></tt> <tt class="py-op">=</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">last_pos</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L595"></a><tt class="py-lineno">595</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L596"></a><tt class="py-lineno">596</tt>  <tt class="py-line">        <tt class="py-name">best_match</tt><tt class="py-op">,</tt> <tt class="py-name">best_pos</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt> </tt>
+<a name="L597"></a><tt class="py-lineno">597</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">regex</tt> <tt class="py-keyword">in</tt> <tt class="py-name">link_regexes</tt><tt class="py-op">:</tt> </tt>
+<a name="L598"></a><tt class="py-lineno">598</tt>  <tt class="py-line">            <tt class="py-name">regex_pos</tt> <tt class="py-op">=</tt> <tt class="py-name">last_pos</tt> </tt>
+<a name="L599"></a><tt class="py-lineno">599</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-number">1</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">match</tt> <tt class="py-op">=</tt> <tt class="py-name">regex</tt><tt class="py-op">.</tt><tt class="py-name">search</tt><tt class="py-op">(</tt><tt id="link-327" 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-321', 'text', 'link-137');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">pos</tt><tt class="py-op">=</tt><tt class="py-name">regex_pos</tt><tt class="py-op">)</tt> </tt>
-<a name="L592"></a><tt class="py-lineno">592</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">match</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L593"></a><tt class="py-lineno">593</tt>  <tt class="py-line">                    <tt class="py-keyword">break</tt> </tt>
-<a name="L594"></a><tt class="py-lineno">594</tt>  <tt class="py-line">                <tt class="py-name">host</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'host'</tt><tt class="py-op">)</tt> </tt>
-<a name="L595"></a><tt class="py-lineno">595</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">host_regex</tt> <tt class="py-keyword">in</tt> <tt class="py-name">avoid_hosts</tt><tt class="py-op">:</tt> </tt>
-<a name="L596"></a><tt class="py-lineno">596</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">host_regex</tt><tt class="py-op">.</tt><tt class="py-name">search</tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L597"></a><tt class="py-lineno">597</tt>  <tt class="py-line">                        <tt class="py-name">regex_pos</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt id="link-322" class="py-name" targets="Method lxml.etree.TreeBuilder.end()=lxml.etree.TreeBuilder-class.html#end"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-322', 'end', 'link-322');">end</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L598"></a><tt class="py-lineno">598</tt>  <tt class="py-line">                        <tt class="py-keyword">break</tt> </tt>
-<a name="L599"></a><tt class="py-lineno">599</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L600"></a><tt class="py-lineno">600</tt>  <tt class="py-line">                    <tt class="py-keyword">break</tt> </tt>
-<a name="L601"></a><tt class="py-lineno">601</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">match</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L602"></a><tt class="py-lineno">602</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
-<a name="L603"></a><tt class="py-lineno">603</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">best_pos</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt id="link-323" class="py-name" targets="Method lxml.etree.TreeBuilder.start()=lxml.etree.TreeBuilder-class.html#start"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-323', 'start', 'link-323');">start</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">best_pos</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">best_match</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt> </tt>
-<a name="L605"></a><tt class="py-lineno">605</tt>  <tt class="py-line">                <tt class="py-name">best_pos</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt id="link-324" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-324', 'start', 'link-323');">start</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L606"></a><tt class="py-lineno">606</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">best_match</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L607"></a><tt class="py-lineno">607</tt>  <tt class="py-line">            <tt class="py-comment"># No more matches</tt> </tt>
-<a name="L608"></a><tt class="py-lineno">608</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-325" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-325', 'links', 'link-47');">links</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L609"></a><tt class="py-lineno">609</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt> <tt class="py-keyword">not</tt> <tt id="link-326" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-326', 'links', 'link-47');">links</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-op">.</tt><tt id="link-327" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-327', 'tail', 'link-302');">tail</a></tt> </tt>
-<a name="L610"></a><tt class="py-lineno">610</tt>  <tt class="py-line">                <tt id="link-328" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-328', 'links', 'link-47');">links</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-op">.</tt><tt id="link-329" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-329', 'tail', 'link-302');">tail</a></tt> <tt class="py-op">=</tt> <tt id="link-330" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-327', 'text', 'link-142');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">pos</tt><tt class="py-op">=</tt><tt class="py-name">regex_pos</tt><tt class="py-op">)</tt> </tt>
+<a name="L601"></a><tt class="py-lineno">601</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">match</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L602"></a><tt class="py-lineno">602</tt>  <tt class="py-line">                    <tt class="py-keyword">break</tt> </tt>
+<a name="L603"></a><tt class="py-lineno">603</tt>  <tt class="py-line">                <tt class="py-name">host</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'host'</tt><tt class="py-op">)</tt> </tt>
+<a name="L604"></a><tt class="py-lineno">604</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">host_regex</tt> <tt class="py-keyword">in</tt> <tt class="py-name">avoid_hosts</tt><tt class="py-op">:</tt> </tt>
+<a name="L605"></a><tt class="py-lineno">605</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">host_regex</tt><tt class="py-op">.</tt><tt class="py-name">search</tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L606"></a><tt class="py-lineno">606</tt>  <tt class="py-line">                        <tt class="py-name">regex_pos</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt id="link-328" class="py-name" targets="Method lxml.etree.TreeBuilder.end()=lxml.etree.TreeBuilder-class.html#end"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-328', 'end', 'link-328');">end</a></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-keyword">break</tt> </tt>
+<a name="L608"></a><tt class="py-lineno">608</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L609"></a><tt class="py-lineno">609</tt>  <tt class="py-line">                    <tt class="py-keyword">break</tt> </tt>
+<a name="L610"></a><tt class="py-lineno">610</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">match</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L611"></a><tt class="py-lineno">611</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L612"></a><tt class="py-lineno">612</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">best_pos</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt id="link-329" class="py-name" targets="Method lxml.etree.TreeBuilder.start()=lxml.etree.TreeBuilder-class.html#start"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-329', 'start', 'link-329');">start</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">best_pos</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">best_match</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt> </tt>
+<a name="L614"></a><tt class="py-lineno">614</tt>  <tt class="py-line">                <tt class="py-name">best_pos</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt id="link-330" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-330', 'start', 'link-329');">start</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L615"></a><tt class="py-lineno">615</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">best_match</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L616"></a><tt class="py-lineno">616</tt>  <tt class="py-line">            <tt class="py-comment"># No more matches</tt> </tt>
+<a name="L617"></a><tt class="py-lineno">617</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-331" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-331', 'links', 'link-48');">links</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L618"></a><tt class="py-lineno">618</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt> <tt class="py-keyword">not</tt> <tt id="link-332" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-332', 'links', 'link-48');">links</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-op">.</tt><tt id="link-333" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-333', 'tail', 'link-308');">tail</a></tt> </tt>
+<a name="L619"></a><tt class="py-lineno">619</tt>  <tt class="py-line">                <tt id="link-334" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-334', 'links', 'link-48');">links</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-op">.</tt><tt id="link-335" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-335', 'tail', 'link-308');">tail</a></tt> <tt class="py-op">=</tt> <tt id="link-336" 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-330', 'text', 'link-137');">text</a></tt> </tt>
-<a name="L611"></a><tt class="py-lineno">611</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L612"></a><tt class="py-lineno">612</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt> <tt class="py-keyword">not</tt> <tt class="py-name">leading_text</tt> </tt>
-<a name="L613"></a><tt class="py-lineno">613</tt>  <tt class="py-line">                <tt class="py-name">leading_text</tt> <tt class="py-op">=</tt> <tt id="link-331" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-336', 'text', 'link-142');">text</a></tt> </tt>
+<a name="L620"></a><tt class="py-lineno">620</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L621"></a><tt class="py-lineno">621</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt> <tt class="py-keyword">not</tt> <tt class="py-name">leading_text</tt> </tt>
+<a name="L622"></a><tt class="py-lineno">622</tt>  <tt class="py-line">                <tt class="py-name">leading_text</tt> <tt class="py-op">=</tt> <tt id="link-337" 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-331', 'text', 'link-137');">text</a></tt> </tt>
-<a name="L614"></a><tt class="py-lineno">614</tt>  <tt class="py-line">            <tt class="py-keyword">break</tt> </tt>
-<a name="L615"></a><tt class="py-lineno">615</tt>  <tt class="py-line">        <tt class="py-name">link</tt> <tt class="py-op">=</tt> <tt class="py-name">best_match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L616"></a><tt class="py-lineno">616</tt>  <tt class="py-line">        <tt id="link-332" class="py-name"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-332', 'end', 'link-322');">end</a></tt> <tt class="py-op">=</tt> <tt class="py-name">best_match</tt><tt class="py-op">.</tt><tt id="link-333" class="py-name"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-333', 'end', 'link-322');">end</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L617"></a><tt class="py-lineno">617</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">link</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">link</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L618"></a><tt class="py-lineno">618</tt>  <tt class="py-line">            <tt class="py-comment"># These punctuation marks shouldn't end a link</tt> </tt>
-<a name="L619"></a><tt class="py-lineno">619</tt>  <tt class="py-line">            <tt id="link-334" class="py-name"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-334', 'end', 'link-322');">end</a></tt> <tt class="py-op">-=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L620"></a><tt class="py-lineno">620</tt>  <tt class="py-line">            <tt class="py-name">link</tt> <tt class="py-op">=</tt> <tt class="py-name">link</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="L621"></a><tt class="py-lineno">621</tt>  <tt class="py-line">        <tt class="py-name">prev_text</tt> <tt class="py-op">=</tt> <tt id="link-335" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-337', 'text', 'link-142');">text</a></tt> </tt>
+<a name="L623"></a><tt class="py-lineno">623</tt>  <tt class="py-line">            <tt class="py-keyword">break</tt> </tt>
+<a name="L624"></a><tt class="py-lineno">624</tt>  <tt class="py-line">        <tt class="py-name">link</tt> <tt class="py-op">=</tt> <tt class="py-name">best_match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L625"></a><tt class="py-lineno">625</tt>  <tt class="py-line">        <tt id="link-338" class="py-name"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-338', 'end', 'link-328');">end</a></tt> <tt class="py-op">=</tt> <tt class="py-name">best_match</tt><tt class="py-op">.</tt><tt id="link-339" class="py-name"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-339', 'end', 'link-328');">end</a></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-keyword">if</tt> <tt class="py-name">link</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">link</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L627"></a><tt class="py-lineno">627</tt>  <tt class="py-line">            <tt class="py-comment"># These punctuation marks shouldn't end a link</tt> </tt>
+<a name="L628"></a><tt class="py-lineno">628</tt>  <tt class="py-line">            <tt id="link-340" class="py-name"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-340', 'end', 'link-328');">end</a></tt> <tt class="py-op">-=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L629"></a><tt class="py-lineno">629</tt>  <tt class="py-line">            <tt class="py-name">link</tt> <tt class="py-op">=</tt> <tt class="py-name">link</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="L630"></a><tt class="py-lineno">630</tt>  <tt class="py-line">        <tt class="py-name">prev_text</tt> <tt class="py-op">=</tt> <tt id="link-341" 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-335', 'text', 'link-137');">text</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">best_match</tt><tt class="py-op">.</tt><tt id="link-336" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-336', 'start', 'link-323');">start</a></tt><tt class="py-op">(</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 class="py-keyword">if</tt> <tt id="link-337" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-337', 'links', 'link-47');">links</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L623"></a><tt class="py-lineno">623</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt> <tt class="py-keyword">not</tt> <tt id="link-338" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-338', 'links', 'link-47');">links</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-op">.</tt><tt id="link-339" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-339', 'tail', 'link-302');">tail</a></tt> </tt>
-<a name="L624"></a><tt class="py-lineno">624</tt>  <tt class="py-line">            <tt id="link-340" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-340', 'links', 'link-47');">links</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-op">.</tt><tt id="link-341" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-341', 'tail', 'link-302');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-name">prev_text</tt> </tt>
-<a name="L625"></a><tt class="py-lineno">625</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L626"></a><tt class="py-lineno">626</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt> <tt class="py-keyword">not</tt> <tt class="py-name">leading_text</tt> </tt>
-<a name="L627"></a><tt class="py-lineno">627</tt>  <tt class="py-line">            <tt class="py-name">leading_text</tt> <tt class="py-op">=</tt> <tt class="py-name">prev_text</tt> </tt>
-<a name="L628"></a><tt class="py-lineno">628</tt>  <tt class="py-line">        <tt class="py-name">anchor</tt> <tt class="py-op">=</tt> <tt class="py-name">factory</tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L629"></a><tt class="py-lineno">629</tt>  <tt class="py-line">        <tt class="py-name">anchor</tt><tt class="py-op">.</tt><tt id="link-342" class="py-name"><a title="lxml.etree._Element.set
-lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-342', 'set', 'link-66');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'href'</tt><tt class="py-op">,</tt> <tt class="py-name">link</tt><tt class="py-op">)</tt> </tt>
-<a name="L630"></a><tt class="py-lineno">630</tt>  <tt class="py-line">        <tt id="link-343" class="py-name" targets="Variable lxml.html.HtmlMixin.body=lxml.html.HtmlMixin-class.html#body"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-343', 'body', 'link-343');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">best_match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">)</tt> </tt>
-<a name="L631"></a><tt class="py-lineno">631</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-344" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-344', 'body', 'link-343');">body</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L632"></a><tt class="py-lineno">632</tt>  <tt class="py-line">            <tt id="link-345" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-345', 'body', 'link-343');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">link</tt> </tt>
-<a name="L633"></a><tt class="py-lineno">633</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-346" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-346', 'body', 'link-343');">body</a></tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt id="link-347" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-347', 'body', 'link-343');">body</a></tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">','</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 id="link-348" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-348', 'body', 'link-343');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-349" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-349', 'body', 'link-343');">body</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>
-<a name="L635"></a><tt class="py-lineno">635</tt>  <tt class="py-line">        <tt class="py-name">anchor</tt><tt class="py-op">.</tt><tt id="link-350" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-341', 'text', 'link-142');">text</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">best_match</tt><tt class="py-op">.</tt><tt id="link-342" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-342', 'start', 'link-329');">start</a></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-keyword">if</tt> <tt id="link-343" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-343', 'links', 'link-48');">links</a></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">assert</tt> <tt class="py-keyword">not</tt> <tt id="link-344" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-344', 'links', 'link-48');">links</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-op">.</tt><tt id="link-345" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-345', 'tail', 'link-308');">tail</a></tt> </tt>
+<a name="L633"></a><tt class="py-lineno">633</tt>  <tt class="py-line">            <tt id="link-346" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-346', 'links', 'link-48');">links</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-op">.</tt><tt id="link-347" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-347', 'tail', 'link-308');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-name">prev_text</tt> </tt>
+<a name="L634"></a><tt class="py-lineno">634</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L635"></a><tt class="py-lineno">635</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt> <tt class="py-keyword">not</tt> <tt class="py-name">leading_text</tt> </tt>
+<a name="L636"></a><tt class="py-lineno">636</tt>  <tt class="py-line">            <tt class="py-name">leading_text</tt> <tt class="py-op">=</tt> <tt class="py-name">prev_text</tt> </tt>
+<a name="L637"></a><tt class="py-lineno">637</tt>  <tt class="py-line">        <tt class="py-name">anchor</tt> <tt class="py-op">=</tt> <tt class="py-name">factory</tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L638"></a><tt class="py-lineno">638</tt>  <tt class="py-line">        <tt class="py-name">anchor</tt><tt class="py-op">.</tt><tt id="link-348" class="py-name"><a title="lxml.etree._Element.set
+lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-348', 'set', 'link-67');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'href'</tt><tt class="py-op">,</tt> <tt class="py-name">link</tt><tt class="py-op">)</tt> </tt>
+<a name="L639"></a><tt class="py-lineno">639</tt>  <tt class="py-line">        <tt id="link-349" class="py-name" targets="Variable lxml.html.HtmlMixin.body=lxml.html.HtmlMixin-class.html#body"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-349', 'body', 'link-349');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">best_match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">)</tt> </tt>
+<a name="L640"></a><tt class="py-lineno">640</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-350" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-350', 'body', 'link-349');">body</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L641"></a><tt class="py-lineno">641</tt>  <tt class="py-line">            <tt id="link-351" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-351', 'body', 'link-349');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">link</tt> </tt>
+<a name="L642"></a><tt class="py-lineno">642</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-352" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-352', 'body', 'link-349');">body</a></tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt id="link-353" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-353', 'body', 'link-349');">body</a></tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L643"></a><tt class="py-lineno">643</tt>  <tt class="py-line">            <tt id="link-354" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-354', 'body', 'link-349');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-355" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-355', 'body', 'link-349');">body</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>
+<a name="L644"></a><tt class="py-lineno">644</tt>  <tt class="py-line">        <tt class="py-name">anchor</tt><tt class="py-op">.</tt><tt id="link-356" 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-350', 'text', 'link-137');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-351" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-351', 'body', 'link-343');">body</a></tt> </tt>
-<a name="L636"></a><tt class="py-lineno">636</tt>  <tt class="py-line">        <tt id="link-352" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-352', 'links', 'link-47');">links</a></tt><tt class="py-op">.</tt><tt id="link-353" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-353', 'append', 'link-200');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">anchor</tt><tt class="py-op">)</tt> </tt>
-<a name="L637"></a><tt class="py-lineno">637</tt>  <tt class="py-line">        <tt id="link-354" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-356', 'text', 'link-142');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-357" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-357', 'body', 'link-349');">body</a></tt> </tt>
+<a name="L645"></a><tt class="py-lineno">645</tt>  <tt class="py-line">        <tt id="link-358" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-358', 'links', 'link-48');">links</a></tt><tt class="py-op">.</tt><tt id="link-359" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-359', 'append', 'link-206');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">anchor</tt><tt class="py-op">)</tt> </tt>
+<a name="L646"></a><tt class="py-lineno">646</tt>  <tt class="py-line">        <tt id="link-360" 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-354', 'text', 'link-137');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-355" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-360', 'text', 'link-142');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-361" 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-355', 'text', 'link-137');">text</a></tt><tt class="py-op">[</tt><tt id="link-356" class="py-name"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-356', 'end', 'link-322');">end</a></tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
-<a name="L638"></a><tt class="py-lineno">638</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">leading_text</tt><tt class="py-op">,</tt> <tt id="link-357" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-357', 'links', 'link-47');">links</a></tt> </tt>
-</div><a name="L639"></a><tt class="py-lineno">639</tt>  <tt class="py-line">                 </tt>
-<a name="autolink_html"></a><div id="autolink_html-def"><a name="L640"></a><tt class="py-lineno">640</tt> <a class="py-toggle" href="#" id="autolink_html-toggle" onclick="return toggle('autolink_html');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean-module.html#autolink_html">autolink_html</a><tt class="py-op">(</tt><tt class="py-param">html</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="autolink_html-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="autolink_html-expanded"><a name="L641"></a><tt class="py-lineno">641</tt>  <tt class="py-line">    <tt class="py-name">result_type</tt> <tt class="py-op">=</tt> <tt id="link-358" class="py-name"><a title="lxml.etree._LogEntry.type
-lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-358', 'type', 'link-274');">type</a></tt><tt class="py-op">(</tt><tt id="link-359" class="py-name"><a title="lxml.html
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-361', 'text', 'link-142');">text</a></tt><tt class="py-op">[</tt><tt id="link-362" class="py-name"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-362', 'end', 'link-328');">end</a></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-keyword">return</tt> <tt class="py-name">leading_text</tt><tt class="py-op">,</tt> <tt id="link-363" class="py-name"><a title="lxml.html.clean.Cleaner.links" class="py-name" href="#" onclick="return doclink('link-363', 'links', 'link-48');">links</a></tt> </tt>
+</div><a name="L648"></a><tt class="py-lineno">648</tt>  <tt class="py-line">                 </tt>
+<a name="autolink_html"></a><div id="autolink_html-def"><a name="L649"></a><tt class="py-lineno">649</tt> <a class="py-toggle" href="#" id="autolink_html-toggle" onclick="return toggle('autolink_html');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean-module.html#autolink_html">autolink_html</a><tt class="py-op">(</tt><tt class="py-param">html</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="autolink_html-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="autolink_html-expanded"><a name="L650"></a><tt class="py-lineno">650</tt>  <tt class="py-line">    <tt class="py-name">result_type</tt> <tt class="py-op">=</tt> <tt id="link-364" class="py-name"><a title="lxml.etree._LogEntry.type
+lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-364', 'type', 'link-280');">type</a></tt><tt class="py-op">(</tt><tt id="link-365" class="py-name"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-359', 'html', 'link-5');">html</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L642"></a><tt class="py-lineno">642</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-360" class="py-name"><a title="lxml.html
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-365', 'html', 'link-5');">html</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L651"></a><tt class="py-lineno">651</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-366" class="py-name"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-360', 'html', 'link-5');">html</a></tt><tt class="py-op">,</tt> <tt id="link-361" class="py-name"><a title="lxml.html.clean.basestring" class="py-name" href="#" onclick="return doclink('link-361', 'basestring', 'link-18');">basestring</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L643"></a><tt class="py-lineno">643</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-362" class="py-name"><a title="lxml.etree.fromstring
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-366', 'html', 'link-5');">html</a></tt><tt class="py-op">,</tt> <tt id="link-367" class="py-name"><a title="lxml.html.clean.basestring" class="py-name" href="#" onclick="return doclink('link-367', 'basestring', 'link-18');">basestring</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L652"></a><tt class="py-lineno">652</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-368" class="py-name"><a title="lxml.etree.fromstring
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
-lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-362', 'fromstring', 'link-9');">fromstring</a></tt><tt class="py-op">(</tt><tt id="link-363" class="py-name"><a title="lxml.html
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-368', 'fromstring', 'link-9');">fromstring</a></tt><tt class="py-op">(</tt><tt id="link-369" class="py-name"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-363', 'html', 'link-5');">html</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L644"></a><tt class="py-lineno">644</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L645"></a><tt class="py-lineno">645</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-364" class="py-name"><a title="lxml.etree.PyErrorLog.copy
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-369', 'html', 'link-5');">html</a></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">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L654"></a><tt class="py-lineno">654</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-370" class="py-name"><a title="lxml.etree.PyErrorLog.copy
 lxml.etree._BaseErrorLog.copy
 lxml.etree._ErrorLog.copy
 lxml.etree._IDDict.copy
 lxml.etree._ListErrorLog.copy
-lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-364', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt id="link-365" class="py-name"><a title="lxml.html
+lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-370', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt id="link-371" class="py-name"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-365', 'html', 'link-5');">html</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L646"></a><tt class="py-lineno">646</tt>  <tt class="py-line">    <tt id="link-366" class="py-name"><a title="lxml.html.clean.autolink" class="py-name" href="#" onclick="return doclink('link-366', 'autolink', 'link-301');">autolink</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
-<a name="L647"></a><tt class="py-lineno">647</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">_transform_result</tt><tt class="py-op">(</tt><tt class="py-name">result_type</tt><tt class="py-op">,</tt> <tt class="py-name">doc</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="L649"></a><tt class="py-lineno">649</tt>  <tt class="py-line"><tt id="link-367" class="py-name" targets="Function lxml.html.clean.autolink_html()=lxml.html.clean-module.html#autolink_html"><a title="lxml.html.clean.autolink_html" class="py-name" href="#" onclick="return doclink('link-367', 'autolink_html', 'link-367');">autolink_html</a></tt><tt class="py-op">.</tt><tt id="link-368" class="py-name" targets="Variable lxml.html.ElementSoup.__doc__=lxml.html.ElementSoup-module.html#__doc__"><a title="lxml.html.ElementSoup.__doc__" class="py-name" href="#" onclick="return doclink('link-368', '__doc__', 'link-368');">__doc__</a></tt> <tt class="py-op">=</tt> <tt id="link-369" class="py-name"><a title="lxml.html.clean.autolink" class="py-name" href="#" onclick="return doclink('link-369', 'autolink', 'link-301');">autolink</a></tt><tt class="py-op">.</tt><tt id="link-370" class="py-name"><a title="lxml.html.ElementSoup.__doc__" class="py-name" href="#" onclick="return doclink('link-370', '__doc__', 'link-368');">__doc__</a></tt> </tt>
-<a name="L650"></a><tt class="py-lineno">650</tt>  <tt class="py-line"> </tt>
-<a name="L651"></a><tt class="py-lineno">651</tt>  <tt class="py-line"><tt class="py-comment">############################################################</tt> </tt>
-<a name="L652"></a><tt class="py-lineno">652</tt>  <tt class="py-line"><tt class="py-comment">## Word wrapping</tt> </tt>
-<a name="L653"></a><tt class="py-lineno">653</tt>  <tt class="py-line"><tt class="py-comment">############################################################</tt> </tt>
-<a name="L654"></a><tt class="py-lineno">654</tt>  <tt class="py-line"> </tt>
-<a name="L655"></a><tt class="py-lineno">655</tt>  <tt class="py-line"><tt id="link-371" class="py-name" targets="Variable lxml.html.clean._avoid_word_break_elements=lxml.html.clean-module.html#_avoid_word_break_elements"><a title="lxml.html.clean._avoid_word_break_elements" class="py-name" href="#" onclick="return doclink('link-371', '_avoid_word_break_elements', 'link-371');">_avoid_word_break_elements</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'pre'</tt><tt class="py-op">,</tt> <tt class="py-string">'textarea'</tt><tt class="py-op">,</tt> <tt class="py-string">'code'</tt><tt class="py-op">]</tt> </tt>
-<a name="L656"></a><tt class="py-lineno">656</tt>  <tt class="py-line"><tt id="link-372" class="py-name" targets="Variable lxml.html.clean._avoid_word_break_classes=lxml.html.clean-module.html#_avoid_word_break_classes"><a title="lxml.html.clean._avoid_word_break_classes" class="py-name" href="#" onclick="return doclink('link-372', '_avoid_word_break_classes', 'link-372');">_avoid_word_break_classes</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'nobreak'</tt><tt class="py-op">]</tt> </tt>
-<a name="L657"></a><tt class="py-lineno">657</tt>  <tt class="py-line"> </tt>
-<a name="word_break"></a><div id="word_break-def"><a name="L658"></a><tt class="py-lineno">658</tt> <a class="py-toggle" href="#" id="word_break-toggle" onclick="return toggle('word_break');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean-module.html#word_break">word_break</a><tt class="py-op">(</tt><tt class="py-param">el</tt><tt class="py-op">,</tt> <tt class="py-param">max_width</tt><tt class="py-op">=</tt><tt class="py-number">40</tt><tt class="py-op">,</tt> </tt>
-<a name="L659"></a><tt class="py-lineno">659</tt>  <tt class="py-line">               <tt class="py-param">avoid_elements</tt><tt class="py-op">=</tt><tt id="link-373" class="py-name"><a title="lxml.html.clean._avoid_word_break_elements" class="py-name" href="#" onclick="return doclink('link-373', '_avoid_word_break_elements', 'link-371');">_avoid_word_break_elements</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L660"></a><tt class="py-lineno">660</tt>  <tt class="py-line">               <tt class="py-param">avoid_classes</tt><tt class="py-op">=</tt><tt id="link-374" class="py-name"><a title="lxml.html.clean._avoid_word_break_classes" class="py-name" href="#" onclick="return doclink('link-374', '_avoid_word_break_classes', 'link-372');">_avoid_word_break_classes</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L661"></a><tt class="py-lineno">661</tt>  <tt class="py-line">               <tt class="py-param">break_character</tt><tt class="py-op">=</tt><tt id="link-375" class="py-name"><a title="lxml.html.clean.unichr" class="py-name" href="#" onclick="return doclink('link-375', 'unichr', 'link-14');">unichr</a></tt><tt class="py-op">(</tt><tt class="py-number">0x200b</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="word_break-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="word_break-expanded"><a name="L662"></a><tt class="py-lineno">662</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
-<a name="L663"></a><tt class="py-lineno">663</tt>  <tt class="py-line"><tt class="py-docstring">    Breaks any long words found in the body of the text (not attributes).</tt> </tt>
-<a name="L664"></a><tt class="py-lineno">664</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L665"></a><tt class="py-lineno">665</tt>  <tt class="py-line"><tt class="py-docstring">    Doesn't effect any of the tags in avoid_elements, by default</tt> </tt>
-<a name="L666"></a><tt class="py-lineno">666</tt>  <tt class="py-line"><tt class="py-docstring">    ``&lt;textarea&gt;`` and ``&lt;pre&gt;``</tt> </tt>
-<a name="L667"></a><tt class="py-lineno">667</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L668"></a><tt class="py-lineno">668</tt>  <tt class="py-line"><tt class="py-docstring">    Breaks words by inserting &amp;#8203;, which is a unicode character</tt> </tt>
-<a name="L669"></a><tt class="py-lineno">669</tt>  <tt class="py-line"><tt class="py-docstring">    for Zero Width Space character.  This generally takes up no space</tt> </tt>
-<a name="L670"></a><tt class="py-lineno">670</tt>  <tt class="py-line"><tt class="py-docstring">    in rendering, but does copy as a space, and in monospace contexts</tt> </tt>
-<a name="L671"></a><tt class="py-lineno">671</tt>  <tt class="py-line"><tt class="py-docstring">    usually takes up space.</tt> </tt>
-<a name="L672"></a><tt class="py-lineno">672</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L673"></a><tt class="py-lineno">673</tt>  <tt class="py-line"><tt class="py-docstring">    See http://www.cs.tut.fi/~jkorpela/html/nobr.html for a discussion</tt> </tt>
-<a name="L674"></a><tt class="py-lineno">674</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L675"></a><tt class="py-lineno">675</tt>  <tt class="py-line">    <tt class="py-comment"># Character suggestion of &amp;#8203 comes from:</tt> </tt>
-<a name="L676"></a><tt class="py-lineno">676</tt>  <tt class="py-line">    <tt class="py-comment">#   http://www.cs.tut.fi/~jkorpela/html/nobr.html</tt> </tt>
-<a name="L677"></a><tt class="py-lineno">677</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-376" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-371', 'html', 'link-5');">html</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L655"></a><tt class="py-lineno">655</tt>  <tt class="py-line">    <tt id="link-372" class="py-name"><a title="lxml.html.clean.autolink" class="py-name" href="#" onclick="return doclink('link-372', 'autolink', 'link-307');">autolink</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L656"></a><tt class="py-lineno">656</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">_transform_result</tt><tt class="py-op">(</tt><tt class="py-name">result_type</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L657"></a><tt class="py-lineno">657</tt>  <tt class="py-line"> </tt>
+<a name="L658"></a><tt class="py-lineno">658</tt>  <tt class="py-line"><tt id="link-373" class="py-name" targets="Function lxml.html.clean.autolink_html()=lxml.html.clean-module.html#autolink_html"><a title="lxml.html.clean.autolink_html" class="py-name" href="#" onclick="return doclink('link-373', 'autolink_html', 'link-373');">autolink_html</a></tt><tt class="py-op">.</tt><tt id="link-374" class="py-name" targets="Variable lxml.html.ElementSoup.__doc__=lxml.html.ElementSoup-module.html#__doc__"><a title="lxml.html.ElementSoup.__doc__" class="py-name" href="#" onclick="return doclink('link-374', '__doc__', 'link-374');">__doc__</a></tt> <tt class="py-op">=</tt> <tt id="link-375" class="py-name"><a title="lxml.html.clean.autolink" class="py-name" href="#" onclick="return doclink('link-375', 'autolink', 'link-307');">autolink</a></tt><tt class="py-op">.</tt><tt id="link-376" class="py-name"><a title="lxml.html.ElementSoup.__doc__" class="py-name" href="#" onclick="return doclink('link-376', '__doc__', 'link-374');">__doc__</a></tt> </tt>
+<a name="L659"></a><tt class="py-lineno">659</tt>  <tt class="py-line"> </tt>
+<a name="L660"></a><tt class="py-lineno">660</tt>  <tt class="py-line"><tt class="py-comment">############################################################</tt> </tt>
+<a name="L661"></a><tt class="py-lineno">661</tt>  <tt class="py-line"><tt class="py-comment">## Word wrapping</tt> </tt>
+<a name="L662"></a><tt class="py-lineno">662</tt>  <tt class="py-line"><tt class="py-comment">############################################################</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 id="link-377" class="py-name" targets="Variable lxml.html.clean._avoid_word_break_elements=lxml.html.clean-module.html#_avoid_word_break_elements"><a title="lxml.html.clean._avoid_word_break_elements" class="py-name" href="#" onclick="return doclink('link-377', '_avoid_word_break_elements', 'link-377');">_avoid_word_break_elements</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'pre'</tt><tt class="py-op">,</tt> <tt class="py-string">'textarea'</tt><tt class="py-op">,</tt> <tt class="py-string">'code'</tt><tt class="py-op">]</tt> </tt>
+<a name="L665"></a><tt class="py-lineno">665</tt>  <tt class="py-line"><tt id="link-378" class="py-name" targets="Variable lxml.html.clean._avoid_word_break_classes=lxml.html.clean-module.html#_avoid_word_break_classes"><a title="lxml.html.clean._avoid_word_break_classes" class="py-name" href="#" onclick="return doclink('link-378', '_avoid_word_break_classes', 'link-378');">_avoid_word_break_classes</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'nobreak'</tt><tt class="py-op">]</tt> </tt>
+<a name="L666"></a><tt class="py-lineno">666</tt>  <tt class="py-line"> </tt>
+<a name="word_break"></a><div id="word_break-def"><a name="L667"></a><tt class="py-lineno">667</tt> <a class="py-toggle" href="#" id="word_break-toggle" onclick="return toggle('word_break');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean-module.html#word_break">word_break</a><tt class="py-op">(</tt><tt class="py-param">el</tt><tt class="py-op">,</tt> <tt class="py-param">max_width</tt><tt class="py-op">=</tt><tt class="py-number">40</tt><tt class="py-op">,</tt> </tt>
+<a name="L668"></a><tt class="py-lineno">668</tt>  <tt class="py-line">               <tt class="py-param">avoid_elements</tt><tt class="py-op">=</tt><tt id="link-379" class="py-name"><a title="lxml.html.clean._avoid_word_break_elements" class="py-name" href="#" onclick="return doclink('link-379', '_avoid_word_break_elements', 'link-377');">_avoid_word_break_elements</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L669"></a><tt class="py-lineno">669</tt>  <tt class="py-line">               <tt class="py-param">avoid_classes</tt><tt class="py-op">=</tt><tt id="link-380" class="py-name"><a title="lxml.html.clean._avoid_word_break_classes" class="py-name" href="#" onclick="return doclink('link-380', '_avoid_word_break_classes', 'link-378');">_avoid_word_break_classes</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-param">break_character</tt><tt class="py-op">=</tt><tt id="link-381" class="py-name"><a title="lxml.html.clean.unichr" class="py-name" href="#" onclick="return doclink('link-381', 'unichr', 'link-14');">unichr</a></tt><tt class="py-op">(</tt><tt class="py-number">0x200b</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="word_break-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="word_break-expanded"><a name="L671"></a><tt class="py-lineno">671</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L672"></a><tt class="py-lineno">672</tt>  <tt class="py-line"><tt class="py-docstring">    Breaks any long words found in the body of the text (not attributes).</tt> </tt>
+<a name="L673"></a><tt class="py-lineno">673</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L674"></a><tt class="py-lineno">674</tt>  <tt class="py-line"><tt class="py-docstring">    Doesn't effect any of the tags in avoid_elements, by default</tt> </tt>
+<a name="L675"></a><tt class="py-lineno">675</tt>  <tt class="py-line"><tt class="py-docstring">    ``&lt;textarea&gt;`` and ``&lt;pre&gt;``</tt> </tt>
+<a name="L676"></a><tt class="py-lineno">676</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L677"></a><tt class="py-lineno">677</tt>  <tt class="py-line"><tt class="py-docstring">    Breaks words by inserting &amp;#8203;, which is a unicode character</tt> </tt>
+<a name="L678"></a><tt class="py-lineno">678</tt>  <tt class="py-line"><tt class="py-docstring">    for Zero Width Space character.  This generally takes up no space</tt> </tt>
+<a name="L679"></a><tt class="py-lineno">679</tt>  <tt class="py-line"><tt class="py-docstring">    in rendering, but does copy as a space, and in monospace contexts</tt> </tt>
+<a name="L680"></a><tt class="py-lineno">680</tt>  <tt class="py-line"><tt class="py-docstring">    usually takes up space.</tt> </tt>
+<a name="L681"></a><tt class="py-lineno">681</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L682"></a><tt class="py-lineno">682</tt>  <tt class="py-line"><tt class="py-docstring">    See http://www.cs.tut.fi/~jkorpela/html/nobr.html for a discussion</tt> </tt>
+<a name="L683"></a><tt class="py-lineno">683</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L684"></a><tt class="py-lineno">684</tt>  <tt class="py-line">    <tt class="py-comment"># Character suggestion of &amp;#8203 comes from:</tt> </tt>
+<a name="L685"></a><tt class="py-lineno">685</tt>  <tt class="py-line">    <tt class="py-comment">#   http://www.cs.tut.fi/~jkorpela/html/nobr.html</tt> </tt>
+<a name="L686"></a><tt class="py-lineno">686</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-382" 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-376', 'tag', 'link-81');">tag</a></tt> <tt class="py-keyword">in</tt> <tt id="link-377" class="py-name"><a title="lxml.html.clean._avoid_word_break_elements" class="py-name" href="#" onclick="return doclink('link-377', '_avoid_word_break_elements', 'link-371');">_avoid_word_break_elements</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-keyword">return</tt> </tt>
-<a name="L679"></a><tt class="py-lineno">679</tt>  <tt class="py-line">    <tt class="py-name">class_name</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-378" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-382', 'tag', 'link-85');">tag</a></tt> <tt class="py-keyword">in</tt> <tt id="link-383" class="py-name"><a title="lxml.html.clean._avoid_word_break_elements" class="py-name" href="#" onclick="return doclink('link-383', '_avoid_word_break_elements', 'link-377');">_avoid_word_break_elements</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L687"></a><tt class="py-lineno">687</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L688"></a><tt class="py-lineno">688</tt>  <tt class="py-line">    <tt class="py-name">class_name</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-384" 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-378', 'get', 'link-127');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'class'</tt><tt class="py-op">)</tt> </tt>
-<a name="L680"></a><tt class="py-lineno">680</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">class_name</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">dont_break</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L682"></a><tt class="py-lineno">682</tt>  <tt class="py-line">        <tt class="py-name">class_name</tt> <tt class="py-op">=</tt> <tt class="py-name">class_name</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L683"></a><tt class="py-lineno">683</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">avoid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">avoid_classes</tt><tt class="py-op">:</tt> </tt>
-<a name="L684"></a><tt class="py-lineno">684</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">avoid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">class_name</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">dont_break</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L686"></a><tt class="py-lineno">686</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt>
-<a name="L687"></a><tt class="py-lineno">687</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">dont_break</tt><tt class="py-op">:</tt> </tt>
-<a name="L688"></a><tt class="py-lineno">688</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
-<a name="L689"></a><tt class="py-lineno">689</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-379" class="py-name"><a title="lxml.etree.QName.text
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-384', 'get', 'link-131');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'class'</tt><tt class="py-op">)</tt> </tt>
+<a name="L689"></a><tt class="py-lineno">689</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">class_name</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">dont_break</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L691"></a><tt class="py-lineno">691</tt>  <tt class="py-line">        <tt class="py-name">class_name</tt> <tt class="py-op">=</tt> <tt class="py-name">class_name</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L692"></a><tt class="py-lineno">692</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">avoid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">avoid_classes</tt><tt class="py-op">:</tt> </tt>
+<a name="L693"></a><tt class="py-lineno">693</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">avoid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">class_name</tt><tt class="py-op">:</tt> </tt>
+<a name="L694"></a><tt class="py-lineno">694</tt>  <tt class="py-line">                <tt class="py-name">dont_break</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L695"></a><tt class="py-lineno">695</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt>
+<a name="L696"></a><tt class="py-lineno">696</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">dont_break</tt><tt class="py-op">:</tt> </tt>
+<a name="L697"></a><tt class="py-lineno">697</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L698"></a><tt class="py-lineno">698</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-385" 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-379', 'text', 'link-137');">text</a></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">el</tt><tt class="py-op">.</tt><tt id="link-380" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-385', 'text', 'link-142');">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">el</tt><tt class="py-op">.</tt><tt id="link-386" 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-380', 'text', 'link-137');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-381" class="py-name" targets="Function lxml.html.clean._break_text()=lxml.html.clean-module.html#_break_text"><a title="lxml.html.clean._break_text" class="py-name" href="#" onclick="return doclink('link-381', '_break_text', 'link-381');">_break_text</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-382" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-386', 'text', 'link-142');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-387" class="py-name" targets="Function lxml.html.clean._break_text()=lxml.html.clean-module.html#_break_text"><a title="lxml.html.clean._break_text" class="py-name" href="#" onclick="return doclink('link-387', '_break_text', 'link-387');">_break_text</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-388" 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-382', 'text', 'link-137');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_width</tt><tt class="py-op">,</tt> <tt class="py-name">break_character</tt><tt class="py-op">)</tt> </tt>
-<a name="L691"></a><tt class="py-lineno">691</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">el</tt><tt class="py-op">:</tt> </tt>
-<a name="L692"></a><tt class="py-lineno">692</tt>  <tt class="py-line">        <tt id="link-383" class="py-name" targets="Function lxml.html.clean.word_break()=lxml.html.clean-module.html#word_break"><a title="lxml.html.clean.word_break" class="py-name" href="#" onclick="return doclink('link-383', 'word_break', 'link-383');">word_break</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">max_width</tt><tt class="py-op">=</tt><tt class="py-name">max_width</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">avoid_elements</tt><tt class="py-op">=</tt><tt class="py-name">avoid_elements</tt><tt class="py-op">,</tt> </tt>
-<a name="L694"></a><tt class="py-lineno">694</tt>  <tt class="py-line">                   <tt class="py-name">avoid_classes</tt><tt class="py-op">=</tt><tt class="py-name">avoid_classes</tt><tt class="py-op">,</tt> </tt>
-<a name="L695"></a><tt class="py-lineno">695</tt>  <tt class="py-line">                   <tt class="py-name">break_character</tt><tt class="py-op">=</tt><tt class="py-name">break_character</tt><tt class="py-op">)</tt> </tt>
-<a name="L696"></a><tt class="py-lineno">696</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-384" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-384', 'tail', 'link-302');">tail</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-name">child</tt><tt class="py-op">.</tt><tt id="link-385" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-385', 'tail', 'link-302');">tail</a></tt> <tt class="py-op">=</tt> <tt id="link-386" class="py-name"><a title="lxml.html.clean._break_text" class="py-name" href="#" onclick="return doclink('link-386', '_break_text', 'link-381');">_break_text</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-387" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-387', 'tail', 'link-302');">tail</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_width</tt><tt class="py-op">,</tt> <tt class="py-name">break_character</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L698"></a><tt class="py-lineno">698</tt>  <tt class="py-line"> </tt>
-<a name="word_break_html"></a><div id="word_break_html-def"><a name="L699"></a><tt class="py-lineno">699</tt> <a class="py-toggle" href="#" id="word_break_html-toggle" onclick="return toggle('word_break_html');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean-module.html#word_break_html">word_break_html</a><tt class="py-op">(</tt><tt class="py-param">html</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="word_break_html-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="word_break_html-expanded"><a name="L700"></a><tt class="py-lineno">700</tt>  <tt class="py-line">    <tt class="py-name">result_type</tt> <tt class="py-op">=</tt> <tt id="link-388" class="py-name"><a title="lxml.etree._LogEntry.type
-lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-388', 'type', 'link-274');">type</a></tt><tt class="py-op">(</tt><tt id="link-389" class="py-name"><a title="lxml.html
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-388', 'text', 'link-142');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_width</tt><tt class="py-op">,</tt> <tt class="py-name">break_character</tt><tt class="py-op">)</tt> </tt>
+<a name="L700"></a><tt class="py-lineno">700</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">el</tt><tt class="py-op">:</tt> </tt>
+<a name="L701"></a><tt class="py-lineno">701</tt>  <tt class="py-line">        <tt id="link-389" class="py-name" targets="Function lxml.html.clean.word_break()=lxml.html.clean-module.html#word_break"><a title="lxml.html.clean.word_break" class="py-name" href="#" onclick="return doclink('link-389', 'word_break', 'link-389');">word_break</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">max_width</tt><tt class="py-op">=</tt><tt class="py-name">max_width</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">avoid_elements</tt><tt class="py-op">=</tt><tt class="py-name">avoid_elements</tt><tt class="py-op">,</tt> </tt>
+<a name="L703"></a><tt class="py-lineno">703</tt>  <tt class="py-line">                   <tt class="py-name">avoid_classes</tt><tt class="py-op">=</tt><tt class="py-name">avoid_classes</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">break_character</tt><tt class="py-op">=</tt><tt class="py-name">break_character</tt><tt class="py-op">)</tt> </tt>
+<a name="L705"></a><tt class="py-lineno">705</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-390" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-390', 'tail', 'link-308');">tail</a></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">child</tt><tt class="py-op">.</tt><tt id="link-391" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-391', 'tail', 'link-308');">tail</a></tt> <tt class="py-op">=</tt> <tt id="link-392" class="py-name"><a title="lxml.html.clean._break_text" class="py-name" href="#" onclick="return doclink('link-392', '_break_text', 'link-387');">_break_text</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-393" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-393', 'tail', 'link-308');">tail</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_width</tt><tt class="py-op">,</tt> <tt class="py-name">break_character</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L707"></a><tt class="py-lineno">707</tt>  <tt class="py-line"> </tt>
+<a name="word_break_html"></a><div id="word_break_html-def"><a name="L708"></a><tt class="py-lineno">708</tt> <a class="py-toggle" href="#" id="word_break_html-toggle" onclick="return toggle('word_break_html');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean-module.html#word_break_html">word_break_html</a><tt class="py-op">(</tt><tt class="py-param">html</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="word_break_html-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="word_break_html-expanded"><a name="L709"></a><tt class="py-lineno">709</tt>  <tt class="py-line">    <tt class="py-name">result_type</tt> <tt class="py-op">=</tt> <tt id="link-394" class="py-name"><a title="lxml.etree._LogEntry.type
+lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-394', 'type', 'link-280');">type</a></tt><tt class="py-op">(</tt><tt id="link-395" class="py-name"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-389', 'html', 'link-5');">html</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L701"></a><tt class="py-lineno">701</tt>  <tt class="py-line">    <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-390" class="py-name"><a title="lxml.etree.fromstring
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-395', 'html', 'link-5');">html</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L710"></a><tt class="py-lineno">710</tt>  <tt class="py-line">    <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-396" class="py-name"><a title="lxml.etree.fromstring
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
-lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-390', 'fromstring', 'link-9');">fromstring</a></tt><tt class="py-op">(</tt><tt id="link-391" class="py-name"><a title="lxml.html
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-396', 'fromstring', 'link-9');">fromstring</a></tt><tt class="py-op">(</tt><tt id="link-397" class="py-name"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-391', 'html', 'link-5');">html</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L702"></a><tt class="py-lineno">702</tt>  <tt class="py-line">    <tt id="link-392" class="py-name"><a title="lxml.html.clean.word_break" class="py-name" href="#" onclick="return doclink('link-392', 'word_break', 'link-383');">word_break</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
-<a name="L703"></a><tt class="py-lineno">703</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">_transform_result</tt><tt class="py-op">(</tt><tt class="py-name">result_type</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L704"></a><tt class="py-lineno">704</tt>  <tt class="py-line"> </tt>
-<a name="_break_text"></a><div id="_break_text-def"><a name="L705"></a><tt class="py-lineno">705</tt> <a class="py-toggle" href="#" id="_break_text-toggle" onclick="return toggle('_break_text');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean-module.html#_break_text">_break_text</a><tt class="py-op">(</tt><tt class="py-param">text</tt><tt class="py-op">,</tt> <tt class="py-param">max_width</tt><tt class="py-op">,</tt> <tt class="py-param">break_character</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_break_text-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_break_text-expanded"><a name="L706"></a><tt class="py-lineno">706</tt>  <tt class="py-line">    <tt class="py-name">words</tt> <tt class="py-op">=</tt> <tt id="link-393" class="py-name"><a title="lxml.etree.QName.text
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-397', 'html', 'link-5');">html</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L711"></a><tt class="py-lineno">711</tt>  <tt class="py-line">    <tt id="link-398" class="py-name"><a title="lxml.html.clean.word_break" class="py-name" href="#" onclick="return doclink('link-398', 'word_break', 'link-389');">word_break</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L712"></a><tt class="py-lineno">712</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">_transform_result</tt><tt class="py-op">(</tt><tt class="py-name">result_type</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L713"></a><tt class="py-lineno">713</tt>  <tt class="py-line"> </tt>
+<a name="_break_text"></a><div id="_break_text-def"><a name="L714"></a><tt class="py-lineno">714</tt> <a class="py-toggle" href="#" id="_break_text-toggle" onclick="return toggle('_break_text');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean-module.html#_break_text">_break_text</a><tt class="py-op">(</tt><tt class="py-param">text</tt><tt class="py-op">,</tt> <tt class="py-param">max_width</tt><tt class="py-op">,</tt> <tt class="py-param">break_character</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_break_text-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_break_text-expanded"><a name="L715"></a><tt class="py-lineno">715</tt>  <tt class="py-line">    <tt class="py-name">words</tt> <tt class="py-op">=</tt> <tt id="link-399" 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-393', 'text', 'link-137');">text</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L707"></a><tt class="py-lineno">707</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">word</tt> <tt class="py-keyword">in</tt> <tt class="py-name">words</tt><tt class="py-op">:</tt> </tt>
-<a name="L708"></a><tt class="py-lineno">708</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">word</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">max_width</tt><tt class="py-op">:</tt> </tt>
-<a name="L709"></a><tt class="py-lineno">709</tt>  <tt class="py-line">            <tt class="py-name">replacement</tt> <tt class="py-op">=</tt> <tt id="link-394" class="py-name" targets="Function lxml.html.clean._insert_break()=lxml.html.clean-module.html#_insert_break"><a title="lxml.html.clean._insert_break" class="py-name" href="#" onclick="return doclink('link-394', '_insert_break', 'link-394');">_insert_break</a></tt><tt class="py-op">(</tt><tt class="py-name">word</tt><tt class="py-op">,</tt> <tt class="py-name">max_width</tt><tt class="py-op">,</tt> <tt class="py-name">break_character</tt><tt class="py-op">)</tt> </tt>
-<a name="L710"></a><tt class="py-lineno">710</tt>  <tt class="py-line">            <tt id="link-395" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-399', 'text', 'link-142');">text</a></tt><tt class="py-op">.</tt><tt class="py-name">split</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">for</tt> <tt class="py-name">word</tt> <tt class="py-keyword">in</tt> <tt class="py-name">words</tt><tt class="py-op">:</tt> </tt>
+<a name="L717"></a><tt class="py-lineno">717</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">word</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">max_width</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">replacement</tt> <tt class="py-op">=</tt> <tt id="link-400" class="py-name" targets="Function lxml.html.clean._insert_break()=lxml.html.clean-module.html#_insert_break"><a title="lxml.html.clean._insert_break" class="py-name" href="#" onclick="return doclink('link-400', '_insert_break', 'link-400');">_insert_break</a></tt><tt class="py-op">(</tt><tt class="py-name">word</tt><tt class="py-op">,</tt> <tt class="py-name">max_width</tt><tt class="py-op">,</tt> <tt class="py-name">break_character</tt><tt class="py-op">)</tt> </tt>
+<a name="L719"></a><tt class="py-lineno">719</tt>  <tt class="py-line">            <tt id="link-401" 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-395', 'text', 'link-137');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-396" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-401', 'text', 'link-142');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-402" 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-396', 'text', 'link-137');">text</a></tt><tt class="py-op">.</tt><tt id="link-397" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-397', 'replace', 'link-266');">replace</a></tt><tt class="py-op">(</tt><tt class="py-name">word</tt><tt class="py-op">,</tt> <tt class="py-name">replacement</tt><tt class="py-op">)</tt> </tt>
-<a name="L711"></a><tt class="py-lineno">711</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-398" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-402', 'text', 'link-142');">text</a></tt><tt class="py-op">.</tt><tt id="link-403" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-403', 'replace', 'link-272');">replace</a></tt><tt class="py-op">(</tt><tt class="py-name">word</tt><tt class="py-op">,</tt> <tt class="py-name">replacement</tt><tt class="py-op">)</tt> </tt>
+<a name="L720"></a><tt class="py-lineno">720</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-404" 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-398', 'text', 'link-137');">text</a></tt> </tt>
-</div><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 id="link-399" class="py-name" targets="Variable lxml.html.clean._break_prefer_re=lxml.html.clean-module.html#_break_prefer_re"><a title="lxml.html.clean._break_prefer_re" class="py-name" href="#" onclick="return doclink('link-399', '_break_prefer_re', 'link-399');">_break_prefer_re</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'[^a-z]'</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-400" class="py-name"><a title="lxml.html.builder.I" class="py-name" href="#" onclick="return doclink('link-400', 'I', 'link-23');">I</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L714"></a><tt class="py-lineno">714</tt>  <tt class="py-line"> </tt>
-<a name="_insert_break"></a><div id="_insert_break-def"><a name="L715"></a><tt class="py-lineno">715</tt> <a class="py-toggle" href="#" id="_insert_break-toggle" onclick="return toggle('_insert_break');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean-module.html#_insert_break">_insert_break</a><tt class="py-op">(</tt><tt class="py-param">word</tt><tt class="py-op">,</tt> <tt class="py-param">width</tt><tt class="py-op">,</tt> <tt class="py-param">break_character</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_insert_break-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_insert_break-expanded"><a name="L716"></a><tt class="py-lineno">716</tt>  <tt class="py-line">    <tt class="py-name">orig_word</tt> <tt class="py-op">=</tt> <tt class="py-name">word</tt> </tt>
-<a name="L717"></a><tt class="py-lineno">717</tt>  <tt class="py-line">    <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-<a name="L718"></a><tt class="py-lineno">718</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">word</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">width</tt><tt class="py-op">:</tt> </tt>
-<a name="L719"></a><tt class="py-lineno">719</tt>  <tt class="py-line">        <tt id="link-401" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-401', 'start', 'link-323');">start</a></tt> <tt class="py-op">=</tt> <tt class="py-name">word</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">width</tt><tt class="py-op">]</tt> </tt>
-<a name="L720"></a><tt class="py-lineno">720</tt>  <tt class="py-line">        <tt class="py-name">breaks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-402" class="py-name"><a title="lxml.html.clean._break_prefer_re" class="py-name" href="#" onclick="return doclink('link-402', '_break_prefer_re', 'link-399');">_break_prefer_re</a></tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt id="link-403" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-403', 'start', 'link-323');">start</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L721"></a><tt class="py-lineno">721</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">breaks</tt><tt class="py-op">:</tt> </tt>
-<a name="L722"></a><tt class="py-lineno">722</tt>  <tt class="py-line">            <tt class="py-name">last_break</tt> <tt class="py-op">=</tt> <tt class="py-name">breaks</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="L723"></a><tt class="py-lineno">723</tt>  <tt class="py-line">            <tt class="py-comment"># Only walk back up to 10 characters to find a nice break:</tt> </tt>
-<a name="L724"></a><tt class="py-lineno">724</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">last_break</tt><tt class="py-op">.</tt><tt id="link-404" class="py-name"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-404', 'end', 'link-322');">end</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">width</tt><tt class="py-op">-</tt><tt class="py-number">10</tt><tt class="py-op">:</tt> </tt>
-<a name="L725"></a><tt class="py-lineno">725</tt>  <tt class="py-line">                <tt class="py-comment"># FIXME: should the break character be at the end of the</tt> </tt>
-<a name="L726"></a><tt class="py-lineno">726</tt>  <tt class="py-line">                <tt class="py-comment"># chunk, or the beginning of the next chunk?</tt> </tt>
-<a name="L727"></a><tt class="py-lineno">727</tt>  <tt class="py-line">                <tt id="link-405" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-405', 'start', 'link-323');">start</a></tt> <tt class="py-op">=</tt> <tt class="py-name">word</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">last_break</tt><tt class="py-op">.</tt><tt id="link-406" class="py-name"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-406', 'end', 'link-322');">end</a></tt><tt class="py-op">(</tt><tt class="py-op">)</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-407" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-407', 'start', 'link-323');">start</a></tt> <tt class="py-op">+</tt> <tt class="py-name">break_character</tt> </tt>
-<a name="L729"></a><tt class="py-lineno">729</tt>  <tt class="py-line">        <tt class="py-name">word</tt> <tt class="py-op">=</tt> <tt class="py-name">word</tt><tt class="py-op">[</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-408" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-408', 'start', 'link-323');">start</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
-<a name="L730"></a><tt class="py-lineno">730</tt>  <tt class="py-line">    <tt class="py-name">result</tt> <tt class="py-op">+=</tt> <tt class="py-name">word</tt> </tt>
-<a name="L731"></a><tt class="py-lineno">731</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
-</div><a name="L732"></a><tt class="py-lineno">732</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-404', 'text', 'link-142');">text</a></tt> </tt>
+</div><a name="L721"></a><tt class="py-lineno">721</tt>  <tt class="py-line"> </tt>
+<a name="L722"></a><tt class="py-lineno">722</tt>  <tt class="py-line"><tt id="link-405" class="py-name" targets="Variable lxml.html.clean._break_prefer_re=lxml.html.clean-module.html#_break_prefer_re"><a title="lxml.html.clean._break_prefer_re" class="py-name" href="#" onclick="return doclink('link-405', '_break_prefer_re', 'link-405');">_break_prefer_re</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'[^a-z]'</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-406" class="py-name"><a title="lxml.html.builder.I" class="py-name" href="#" onclick="return doclink('link-406', 'I', 'link-23');">I</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L723"></a><tt class="py-lineno">723</tt>  <tt class="py-line"> </tt>
+<a name="_insert_break"></a><div id="_insert_break-def"><a name="L724"></a><tt class="py-lineno">724</tt> <a class="py-toggle" href="#" id="_insert_break-toggle" onclick="return toggle('_insert_break');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.html.clean-module.html#_insert_break">_insert_break</a><tt class="py-op">(</tt><tt class="py-param">word</tt><tt class="py-op">,</tt> <tt class="py-param">width</tt><tt class="py-op">,</tt> <tt class="py-param">break_character</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_insert_break-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_insert_break-expanded"><a name="L725"></a><tt class="py-lineno">725</tt>  <tt class="py-line">    <tt class="py-name">orig_word</tt> <tt class="py-op">=</tt> <tt class="py-name">word</tt> </tt>
+<a name="L726"></a><tt class="py-lineno">726</tt>  <tt class="py-line">    <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L727"></a><tt class="py-lineno">727</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">word</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">width</tt><tt class="py-op">:</tt> </tt>
+<a name="L728"></a><tt class="py-lineno">728</tt>  <tt class="py-line">        <tt id="link-407" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-407', 'start', 'link-329');">start</a></tt> <tt class="py-op">=</tt> <tt class="py-name">word</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">width</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">breaks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-408" class="py-name"><a title="lxml.html.clean._break_prefer_re" class="py-name" href="#" onclick="return doclink('link-408', '_break_prefer_re', 'link-405');">_break_prefer_re</a></tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt id="link-409" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-409', 'start', 'link-329');">start</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L730"></a><tt class="py-lineno">730</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">breaks</tt><tt class="py-op">:</tt> </tt>
+<a name="L731"></a><tt class="py-lineno">731</tt>  <tt class="py-line">            <tt class="py-name">last_break</tt> <tt class="py-op">=</tt> <tt class="py-name">breaks</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="L732"></a><tt class="py-lineno">732</tt>  <tt class="py-line">            <tt class="py-comment"># Only walk back up to 10 characters to find a nice break:</tt> </tt>
+<a name="L733"></a><tt class="py-lineno">733</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">last_break</tt><tt class="py-op">.</tt><tt id="link-410" class="py-name"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-410', 'end', 'link-328');">end</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">width</tt><tt class="py-op">-</tt><tt class="py-number">10</tt><tt class="py-op">:</tt> </tt>
+<a name="L734"></a><tt class="py-lineno">734</tt>  <tt class="py-line">                <tt class="py-comment"># FIXME: should the break character be at the end of the</tt> </tt>
+<a name="L735"></a><tt class="py-lineno">735</tt>  <tt class="py-line">                <tt class="py-comment"># chunk, or the beginning of the next chunk?</tt> </tt>
+<a name="L736"></a><tt class="py-lineno">736</tt>  <tt class="py-line">                <tt id="link-411" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-411', 'start', 'link-329');">start</a></tt> <tt class="py-op">=</tt> <tt class="py-name">word</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">last_break</tt><tt class="py-op">.</tt><tt id="link-412" class="py-name"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-412', 'end', 'link-328');">end</a></tt><tt class="py-op">(</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 class="py-name">result</tt> <tt class="py-op">+=</tt> <tt id="link-413" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-413', 'start', 'link-329');">start</a></tt> <tt class="py-op">+</tt> <tt class="py-name">break_character</tt> </tt>
+<a name="L738"></a><tt class="py-lineno">738</tt>  <tt class="py-line">        <tt class="py-name">word</tt> <tt class="py-op">=</tt> <tt class="py-name">word</tt><tt class="py-op">[</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-414" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-414', 'start', 'link-329');">start</a></tt><tt class="py-op">)</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">result</tt> <tt class="py-op">+=</tt> <tt class="py-name">word</tt> </tt>
+<a name="L740"></a><tt class="py-lineno">740</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L741"></a><tt class="py-lineno">741</tt>  <tt class="py-line"> </tt><script type="text/javascript">
 <!--
 expandto(location.href);
 // -->
@@ -1299,7 +1308,7 @@ 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 Thu Mar 17 15:04:28 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c60d8f51625a606ab55b9556a64b7ffb91f29a90..b22e8cba29b32fe837c05828cb7c7e018cc90df4 100644 (file)
@@ -82,7 +82,9 @@ as they could contain Javascript.</dd>
 <dt><tt class="rst-docutils literal">comments</tt>:</dt>
 <dd>Removes any comments.</dd>
 <dt><tt class="rst-docutils literal">style</tt>:</dt>
-<dd>Removes any style tags or attributes.</dd>
+<dd>Removes any style tags.</dd>
+<dt><tt class="rst-docutils literal">inline_style</tt></dt>
+<dd>Removes any style attributes.  Defaults to the value of the <tt class="rst-docutils literal">style</tt> option.</dd>
 <dt><tt class="rst-docutils literal">links</tt>:</dt>
 <dd>Removes any <tt class="rst-docutils literal">&lt;link&gt;</tt> tags</dd>
 <dt><tt class="rst-docutils literal">meta</tt>:</dt>
@@ -420,6 +422,14 @@ checks for attempt to do stuff like this.</td>
         <a name="style"></a><span class="summary-name">style</span> = <code title="False">False</code>
     </td>
   </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="inline_style"></a><span class="summary-name">inline_style</span> = <code title="None">None</code><br />
+      hash(x)
+    </td>
+  </tr>
 <tr>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
@@ -759,7 +769,7 @@ more sneaky attempts.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index de783f211dd8a0154468c74ba9769a48112ba7a3..4b4ecb4fbcdf24869e4525749ed44844d03f2d0b 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d939e9bec86666df2db784232a0d9a6acdc99861..7ff46dbfc16c684ab54fa29c70b269ed484728d5 100644 (file)
@@ -240,7 +240,7 @@ 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 Thu Mar 17 15:04:28 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 935ed039cc77b8b39e0128d45bb136291cfc8ffc..ad68428b89f5b0b4120546b7d793e5545ab45c92 100644 (file)
@@ -193,7 +193,7 @@ blocks amidst large spans of changes
       <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">&lt;function default_markup at 0x2ad9e96d9c80&gt;</span>)</span><br />
+        <span class="summary-sig-arg">markup</span>=<span class="summary-sig-default">&lt;function default_markup at 0x2b8b5f2dac80&gt;</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&nbsp;code</a></span>
@@ -972,7 +972,7 @@ given &lt;p&gt;Hi &lt;i&gt;there!&lt;/i&gt;&lt;/p&gt;, if you remove the &lt;i&g
   <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">&lt;function default_markup at 0x2ad9e96d9c80&gt;</span>)</span>
+        <span class="sig-arg">markup</span>=<span class="sig-default">&lt;function default_markup at 0x2b8b5f2dac80&gt;</span>)</span>
   </h3>
   </td><td align="right" valign="top"
     ><span class="codelink"><a href="lxml.html.diff-pysrc.html#html_annotate">source&nbsp;code</a></span>&nbsp;
@@ -1370,7 +1370,7 @@ includes the elements tail.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3f6254b5922601ff3eafd2d844f3a169552aaf11..36da41f8f6805bcd76bb151fbf2506e302c7cc3a 100644 (file)
@@ -1741,7 +1741,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 39f9a60b273aa425857699357cb04e3fd236c95b..2f7e90694581bb8fbe3a5989681b3a6b29031e4c 100644 (file)
@@ -94,7 +94,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index efd00657992e1b4c823d2ea7cc04a4a42e0f59e9..d7bab5aaff90138a181c98cb8cd15461211a38cf 100644 (file)
@@ -94,7 +94,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 20644fb2e54928de992f443cd3df5b8b15549736..8f5cb72efe817e99bf1e789749a851f2d66673a6 100644 (file)
@@ -235,7 +235,7 @@ triple with n==0.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 95167aadba07705784b3c63687512d19378a99ed..76e0f1bcac1a642f35a2b6e2f920527f7598e90a 100644 (file)
@@ -182,7 +182,7 @@ Raised when the document no longer contains any pending deletes
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b2c4b02704be9b13bf1316aba566715a43902816..dd36290d10e56a2c274f8162b8b6707cca3a096b 100644 (file)
@@ -342,7 +342,7 @@ show the href when it changes.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c39b445f9d71567ad76014d0b598106215b435b5..222c9c94e7299415b8ee2bcbdf9af1421e501eaa 100644 (file)
@@ -427,7 +427,7 @@ is only represented in a document by a tag.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d88d029e100abcbced158ad59da68bf847f6f921..3f33453ded0ece1d55b0ea5716894361cfb3e4c0 100644 (file)
@@ -412,7 +412,7 @@ space.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e0f167bf7020fc22e511a62e0db1a5389854ad46..dab498c0cc32bff22fed921304a4fd79f0936c54 100644 (file)
@@ -546,7 +546,7 @@ escendant-or-self::x:textarea
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6d7fa85311fb70a4d899ea12c7d8580adb683147..4d89b7125cd27e528385fb44e50af724768826d3 100644 (file)
@@ -780,7 +780,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c6192d587a1b08950eb35568b300cf38983aa929..b0cc50b771e01e07768e2ad98f9e2f3feba633bd 100644 (file)
@@ -303,7 +303,7 @@ object --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cf1286a857185b3e14d7a42cea2c9937c85c3164..68e7bd1a9b47b3e5873c2c7991b0efe0515a874f 100644 (file)
@@ -185,7 +185,7 @@ Raised when no form can be found
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7d9fafc6d2175f086faafb1eb40c4700fef72bdf..7c93783cfc85950555ed794b78af6bf916d44f8d 100644 (file)
@@ -418,7 +418,7 @@ is a fragment or a document.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c01aed21c1f577cc7bbbdc92d013a0056f4eaab9..a64785d38e7d7528ed9d955f2fe38a98e782068f 100644 (file)
@@ -601,7 +601,7 @@ 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 Thu Mar 17 15:04:27 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e13ede522a8747f90595fd10e76316699f92028b..af5c15859d2d7942302257e0e0d3efa53b89e3c3 100644 (file)
@@ -256,7 +256,7 @@ text</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8bbfe899848603ae9a01f93959c0f9ba2ebdee6c..bdf4ded380e3a014f3a95fc879a2098763454b2c 100644 (file)
@@ -139,7 +139,7 @@ An html5lib XHTML Parser with lxml as tree.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8ec8aa58fe32d3db691a5052cf382cd191878d97..b76014400e14e798e4366af372c7b164adde22dd 100644 (file)
@@ -487,7 +487,7 @@ keyword.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5436d1c799fcf23b5ec7d86233ec66e1b75bc6ae..7e7ed72345bd10e18062e2d416f1960aad5d39c2 100644 (file)
@@ -543,7 +543,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c3ab0de8fa12b76c9b404d6c459d9590f96caf36..a233a71083c1e8c03e0c5ca4b239e2268d849b77 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5d3e71ecb9e873e52eb718c04ef3f02ac221b356..e4524522c1067e55c3b662de6111088581db37ee 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9d7f00d7a8b38ce011f779090e734f8fc042adc9..faa241ee1962ee2e74260dd47566339d4b5181fe 100644 (file)
@@ -116,7 +116,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7f4a6f6d5285e6162a4502111d9f43cd3b45a6ec..dfa025d7bf8ba153dcb58fc0bcf8a91982ce4435 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9bb5114a7809941f9da8187ca5e1f4d890f9bdc3..8ced2c0c0d6ae47be226db4b2f42ab78ebdaa06e 100644 (file)
@@ -100,7 +100,7 @@ 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 Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2d18f0c5e6ce98f438071632be74ddfc6d427b18..fbd49c38268e4efec891948ef16541429d78bfdd 100644 (file)
@@ -525,7 +525,7 @@ chematron.rng')))
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2c12c2275a6c5bb984df1e56f8f34f7a6fc7aabf..8db15d1b94e3d32377a77b13d2bc0798d4a6e1ac 100644 (file)
@@ -627,7 +627,7 @@ 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 Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c083781ee52d9dc02980ae1779d00ee3586c5eca..a2173c471f1e951fdf52da6ad5d06e9cd3bb5bc2 100644 (file)
@@ -727,7 +727,7 @@ been turned off).
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cfb5e55bc8c031e35e6098437b2c74cc020a2690..363635a9f791e79574135da8eb9026a6fbbcf442 100644 (file)
@@ -66,7 +66,7 @@ It is based on <a href="lxml.etree-module.html" class="link">lxml.etree</a>.
 
 <hr />
 <div class="fields">      <p><strong>Version:</strong>
-        3.6.0
+        3.6.1
       </p>
 </div><!-- ==================== CLASSES ==================== -->
 <a name="section-Classes"></a>
@@ -629,7 +629,7 @@ attributes.</td>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="E"></a><span class="summary-name">E</span> = <code title="&lt;lxml.objectify.ElementMaker object at 0x2ad9e84059b0&gt;">&lt;lxml.objectify.ElementMaker object at 0x2ad9e84059b0&gt;</code>
+        <a name="E"></a><span class="summary-name">E</span> = <code title="&lt;lxml.objectify.ElementMaker object at 0x2b8b5e0079b0&gt;">&lt;lxml.objectify.ElementMaker object at 0x2b8b5e0079b0&gt;</code>
     </td>
   </tr>
 <tr>
@@ -1136,7 +1136,7 @@ elements.  Pass 'string', for example, to make string values the default.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0489664d4fa97351519891d2d1bd06233e964654..c3f39ce0c2b3c20345351f16a056848ba4bc4da8 100644 (file)
@@ -802,7 +802,7 @@ this if they recursively call _init() in the superclasses.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0148596ffd9ffb8a0e78c4a5f207f5480c55428d..d7df1ab351b3151e8521a1ba7231b1134e863785 100644 (file)
@@ -365,7 +365,7 @@ some text
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2392bb983daf0097bd173a30d2160e481b2758be..705604e220ba8377920c26605fb293eeb3e88cfa 100644 (file)
@@ -391,7 +391,7 @@ this if they recursively call _init() in the superclasses.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 13470693a244b4128a9e9abca7663aebb0ff18f0..4dfbf52baf838c3ec8c3ab8b43360b3fc17f9998 100644 (file)
@@ -397,7 +397,7 @@ this if they recursively call _init() in the superclasses.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 488bde07f9b215dc3f9f1dfb58de6ce8d38a0c35..8fec48fc6f84e36027d6d2dac9ca9c229c1471e8 100644 (file)
@@ -391,7 +391,7 @@ this if they recursively call _init() in the superclasses.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dca4e7f98af17bca4e5bea93ecb63c4f8536f893..7fdb88b080f24705ad0643e4fda3b22101196fff 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4cf92375e9ae87b1e5642c725b1c6b4aa52565a1..6845bc0a9e6edad85573766282b952c5d2796033 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cee80a3549eb6fc617df6df034273157de7b5af9..c4f77ca5730eb17353b099bbe8eb3889cd2907f9 100644 (file)
@@ -452,7 +452,7 @@ as second argument) or raises AttributeError.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ed6da086cfc01ff21975f8e11191355cdcb29741..fc9b5575422de0ea94908195b0dc26c5112ed30d 100644 (file)
@@ -409,7 +409,7 @@ doing.</td>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0242df83feb7ea8d721d9139923957ca28420ab1..7a34adea24473cbef4c5eecbdcb031c6b69facde 100644 (file)
@@ -860,7 +860,7 @@ returned in document order.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b61d39cd33689a235b1d91ae69ff12ecb5c7a7d7..a564c0c4f4ee75bdeed123beb3bb07e4ac7d3362 100644 (file)
@@ -276,7 +276,7 @@ empty data elements (defauls to StringElement).</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2753f475d543fa70ef5930e4e49511772943f14f..9eef80bd6c3cee7ead6d5b5d8d2344e65f56ed3a 100644 (file)
@@ -71,11 +71,14 @@ object --+
 <hr />
 <p>PyType(self, name, type_check, type_class, stringify=None)
 User defined type.</p>
-<p>Named type that contains a type check function and a type class that
-inherits from ObjectifiedDataElement.  The type check must take a string
-as argument and raise ValueError or TypeError if it cannot handle the
-string value.  It may be None in which case it is not considered for type
-guessing.</p>
+<p>Named type that contains a type check function, a type class that
+inherits from ObjectifiedDataElement and an optional &quot;stringification&quot;
+function.  The type check must take a string as argument and raise
+ValueError or TypeError if it cannot handle the string value.  It may be
+None in which case it is not considered for type guessing.  For registered
+named types, the 'stringify' function (or unicode() if None) is used to
+convert a Python object with type name 'name' to the string representation
+stored in the XML tree.</p>
 <p>Example:</p>
 <pre class="rst-literal-block">
 PyType('int', int, MyIntClass).register()
@@ -443,7 +446,7 @@ ignored.  Raises ValueError if the dependencies cannot be fulfilled.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7a855e989fd79301c9b0d29d6565c2f9b5cb8dd0..ba3cd4d4bfe218dcbd18e26977f5848d4ed41851 100644 (file)
@@ -732,7 +732,7 @@ Instead, use the .text attribute to get a 'real' string.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d8efc39b328a99e03538d509df2610d20d4fde16..c87b32e81269be8f0ee98bd43d4860327fde3266 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6a62717e764c283f1190f5a669aad73ee0737e2e..d2a5f7000590b2751b2bd36f28e8f27d287d042c 100644 (file)
@@ -107,7 +107,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fed74c66990b2ddd6bb2c16778215e6c43f82e1b..7ab0a92d60046db50074531ef056725b7a2d1daf 100644 (file)
@@ -219,7 +219,7 @@ them against a SAX ContentHandler.</td>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2cff1cbd6a7a6d0f4be2dcd7f2c8cf0306019305..b0d1f523689a067d9ffbb3be5a580a0ef00e62fa 100644 (file)
@@ -574,7 +574,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8f82a838dd4be6024456c095508df687618dbd37..8d1239dfd61b393f7812ef90e57a43a7fee6c3bd 100644 (file)
@@ -871,7 +871,7 @@ Locator provides useful information.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7b13e315786e099fa4758c1fdd0fce6127c2a2d5..c75fd7ca8938a74f5e2fad7d77e06c0f6b0ae830 100644 (file)
@@ -281,7 +281,7 @@ Produces SAX events for an element and children.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 302734f9d09cb9b1ff62f29d50d632f242c686b1..51dad6476a799667078ae40325af3023d1539081 100644 (file)
@@ -211,7 +211,7 @@ General SAX error.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c78b88daba94253cb7a18656a4a82656f3a1d7bb..139c5467aa09e4bd4dd590a67d487b1cec7a8b79 100644 (file)
@@ -173,7 +173,7 @@ namespace registry mechanism</em>    </li>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 10c650a8d70cb0f83355a4fb4cd181ab8fe5eedb..9713704ff30ede1b174c2675005421ef2564910c 100644 (file)
@@ -102,7 +102,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a0aab47d6014f7e69a1610daea6d0e616f916ec0..f07f4d822f72fcc9e4c1b467f35d4ba60451551d 100644 (file)
@@ -529,7 +529,7 @@ occurrences of pattern in string by the replacement repl.</td>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ee056076cfddc7e78a1335d592e4d3f2b49fc0ba..c715f452fcd625bebb910343018c2a447be2bbf2 100644 (file)
@@ -631,7 +631,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7f14bcd3b4c6cbca00cd085da0ebd0ffc5c11469..e793d02cb96db989aa89e6f1306586c8beb2b865 100644 (file)
@@ -420,7 +420,7 @@ unittest.case.TestCase --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d36fdde32667e73fd479be0dbdf18b2aeec8cbd5..20d85b24ca4452277e752102358d1ce394713239 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b9ebba2c8297493b8973721e9f495e8d492573cd..1bc9d622e6c3e361089690dc75b01eb4e2176f70 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 557ae09ccf94dfe7c32f44deaba4f8b52507ad7c..bc3704efec84e7c9f08fba84be2542245faeff24 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6780a59fbf543e9497bf563618ea7a48ab308aa9..da3dd148e08bbce00b62835402f705602d31e0a0 100644 (file)
@@ -263,7 +263,7 @@ Simple HTTP request dumper for tests in Python 2.5+.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ec7ed9667215bd2becb5787c194c84c17ee73ea4..f7025733d51d7811662ccf7dd1bbe582109e8df8 100644 (file)
@@ -196,7 +196,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4454c476c5b652d7cbebe2a5e802e2b14d3c3407..83d492a279a406efe51bab3b64e1d4c561128ec3 100644 (file)
@@ -246,7 +246,7 @@ object --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f748ff0fd218e06315c525cf2a05b7bc71e934de..9d77947f4de90174ff984065b1860d9e1a7b4e05 100644 (file)
@@ -203,7 +203,7 @@ A web server that starts a new thread for each request.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5960558abf78f545cce5ef3a7ff158a158278c51..c15b5f0ab5936af2ee3e991c1d94fa6e424320b8 100644 (file)
@@ -330,7 +330,7 @@ message.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5be2cae1fe57a973040424805f779bb5a5286c1b..531f0501a11f01e4c4a95d08a06585650d38011d 100644 (file)
@@ -1177,7 +1177,7 @@ ElementTree.XML(&quot;&quot;&quot;
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 67290406d3d64b46d44fe353304be4a81f93f100..45a82b4b3b8bed621f493bde0384ae2c85a171da 100644 (file)
@@ -1512,7 +1512,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e7c7504ef014aeb5376fee42c2896c167ac54835..b914498109e9cb0118d75c5b6d27718ef416bc59 100644 (file)
@@ -676,7 +676,7 @@ unserialize(&quot;&quot;&quot;
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5eeb5af5aefd66cb976a343ca328bfa7eabf00c9..074bf0684067eebc8361cae42f24b99b84a476c7 100644 (file)
@@ -635,7 +635,7 @@ 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 Thu Mar 17 15:04:27 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bd6fe6f78a3930eaf648bb37304012dea2740227..a2ed6329c3ee310712202cf97e5eb8a85dc24401 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cd5e216efceefed339c18288671a326bdb26ecb6..64fe312ca6cbff30a8c8ae98b385e4de6ea09bd7 100644 (file)
@@ -254,7 +254,7 @@ 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 Thu Mar 17 15:04:28 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1b650b6ead889d6b5b3742f3b4018486f2c2dc19..bf3f718b15e74ec7c9dbf184f975a15857040fc1 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2217926606552a4608fcb5fac593275faf61a6b6..1f2735fce2ed301dd84ea2754460d0081188a820 100644 (file)
@@ -269,7 +269,7 @@ Tests for different Element class lookup mechanisms.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 156ea68291b3f3c3712c86a6e172b9c92dfd5eb2..055a196d140d11a4e4f1bc286f1295a1455914a7 100644 (file)
@@ -1263,7 +1263,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c6fba0c58d73be9bf30d4303751b38e33d66a2a8..1ae2a224ef7bd486f2dbdfb120da5c35aaab38b8 100644 (file)
@@ -602,7 +602,7 @@ Test cases for different Element class lookup mechanisms.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 91b7f8a105c3f7718fb373d90a81c85bf9a0be65..9052d0cfc10373c4752141136b748acb9609fe4e 100644 (file)
@@ -496,7 +496,7 @@ Basic tests for element proxy behaviour.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index aabec92924540275fbe7f164c746159095b3c6d0..1cbbeab72c1744243371c7612efb62f043cea180 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e4ff3db1dd9602b61a4198f4a64b282ddb65b18f..6cd06a605b2a55ea04f2a300cd9d791786b8955b 100644 (file)
@@ -211,7 +211,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e19452e93b53ed6eee129b13823d1af81a85f25f..f1414f6ed179007a5eef1400393fd167db5e78d7 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 238d8b714e03c25a15ba812ba7927efaebdb5efb..3eb423f4fb369e207a7998af9ac5471142b576e4 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f9e9b214e118ab797e3a92d9c73d609d284a3099..7b09c1be1bddec7f95ac2ef020d4010e8ebd8299 100644 (file)
@@ -333,7 +333,7 @@ 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 Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a8af4a30b534230cb9f6ea8c48a10b99421b8723..464b4cc65adcb0dc430078f64dfebfd0476abd66 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ca200e681e94f39b64e8cd2f167ca7e1cd28d5fd..70bcae5a03f28eb06efc89be27642f8f72a52ad4 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f8e9c27e317d1bdda5435dd4c7d43a368ea7d877..f9270e35815a682faa0029b5b11b85dc7adfa78b 100644 (file)
@@ -223,7 +223,7 @@ Test cases related to DTD parsing and validation
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6d046743b8659906c7b5c304e504111f99ae9ab3..d71f7e6c737ba2285197b3e6cc2af64411bb819a 100644 (file)
@@ -1231,7 +1231,7 @@ 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 Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8e4782fd644e0d633dcb5e8cdd84b58435bcd333..be2dbe3c1a2936969a5665b428fcfc658e6e3210 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 83f805d418c2ba0aafa69ba7d26f4c148bf6286e..05860c9a7f4683b6bc999d6f5848dac537e5344d 100644 (file)
@@ -179,7 +179,7 @@ Tests for the ElementPath implementation.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3e0b50f7f3416dad5f9fcedf61b48109f2cfa2da..b45ae6cbb2c14901735550df7d4b0fd9dd11344e 100644 (file)
@@ -178,7 +178,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ce5041c0b717f110b6c5f85cd27e27e066be9ec6..3d32f1b2a7b14f1b6d25b362a7a7f6d5708acd98 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 63765797dd19e9562122419df4958588badc8785..d651e2f01582a750c64ba9ca936006c8a5027f60 100644 (file)
@@ -293,7 +293,7 @@ for IO related test cases.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5b77ba88056d2fe983465946e8a92493571321cd..01f180e76ccf19bf6600191d3612e6be7e61faae 100644 (file)
@@ -11737,7 +11737,7 @@ 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 Thu Mar 17 15:04:27 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 224ed9aa87b75ca78ca912c55f1cd3d40e2fca27..56f304994cb3523b14d409221dc6e685b63b3acf 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 97cd13044df0ccf4867466139f2ccee4c7491858..90aa138c871e90e85532c67a3fbd537b576e9ec0 100644 (file)
@@ -372,7 +372,7 @@ unittest.case.TestCase --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3b4a79750cc9334ef43bf466761340c278e04de8..7d112dd881a7d9171ca5e5ad179e8043b6174893 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e0730f4d2caec064087d106f780b41f9b3e13a8d..717df69eb96d27d19eb4f5bd08ea90818407f8b5 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cb9e5c764ecba69dfd63e4ad7f4fa0836e56a778..70b15f6625def4968a03a70ed6905bdde11b1293 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4a55b2d1ca1b2b39d9705a43788eaa56fd626c39..9f73437d98fbd98b61d0f7af1daded6f8f0a2874 100644 (file)
@@ -494,7 +494,7 @@ unittest.case.TestCase --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index efa27d53d4caffcd6c9f5a0b2273fef2eb3a0ebc..983a8d37be88dc3a8b75982244a04576883f15c1 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 841060a791d60206e20adff6c7d8e7b16bed8447..5241e682080835f2c3202ea1d303df110a460f5f 100644 (file)
@@ -272,7 +272,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cddf888f58e3e62dc1a0013c987439a7bdff76a0..43b3a53c3afbd32becee1508727b707472f1dd81 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c6b35b5a75d9761839a5bc3390311d1fcf34a937..a0cdb236069eb7847968abba2b63a7083d4b4ed8 100644 (file)
@@ -231,7 +231,7 @@ test_elementtree</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 494cf25104891ccd3db0b2754a2c37e8df54cc24..ff8e2e8f911f49df809d1bfdff51805925e6e9a1 100644 (file)
@@ -12380,7 +12380,7 @@ 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 Thu Mar 17 15:04:27 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3bd23ea09d0c57a34e24705386891a41ed0003bd..e99bc7934852cbcb930f9b3c4090fb9c60b16ebd 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 04f612fed84195f9a5ce36d2f80c763dab89dd6f..a8662bf471343632ce51bb7e2a698b8723cb86ce 100644 (file)
@@ -400,7 +400,7 @@ reset the logging setup ...</td>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bf75091a8754f342f8b3967ea30fa499f6afe97b..a495256a07ab2cb40bd6842d8fdba121aa62976f 100644 (file)
@@ -4486,7 +4486,7 @@ Tests only for etree, not ElementTree
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 11c0e8f59818ad5573b04d1d39e461a056f5d88f..1deabe50c78608e095d52d03872a49ffcf19562a 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4a281e33acd995e08a0f78f35e8955670f02cf97..064ff677d596695eb4cf056432f24a0a28e04bb6 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 41eb51e6fde9ecd72fd75a1d2b64d0ef2d201476..5afce6b873e0b6f39735fbff367dafbec0d5fd6c 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 454c63b08aa07da65a97c1a35a0e7e8454d030ec..3797715bb44620ce7f47736fb4c3a01fdc4b6051 100644 (file)
@@ -438,7 +438,7 @@ unittest.case.TestCase --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index eee7d84569cbac098d524118fdf7aed244685c3a..7823c8a318c95e149a36814c37454976338dbc4a 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c4b1cb830095ef5707b4c4d92143b85a68c655a6..4ff1a48f738ae04be96febd883e04790e69f04c5 100644 (file)
@@ -232,7 +232,7 @@ HTML parser test cases for etree
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3109292a8fc18a2ed28847565860a2e417174acd..2d92d8f98e487b0888ade5a55b0caa00cee02601 100644 (file)
@@ -1838,7 +1838,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index df8dc07c3911d4d1714a476075a0242d38918666..20e0413e687652148bfd79414282ea7a931cd5a8 100644 (file)
@@ -1194,7 +1194,7 @@ h1&gt;&lt;/body&gt;&lt;/html&gt;'"><code class="variable-quote">u'</code><code c
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 47a5a7a00b329e8bb9423383a419e43343f818c6..5024a34e65ce097830698c3293fc22926520c895 100644 (file)
@@ -223,7 +223,7 @@ Web IO test cases that need Python 2.5+ (wsgiref)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 79c4e873084d5ac7b1546909a78348ecb3fa7271..9f0938b76b1edcb8c3e2ee600ffdf5ab9613d763 100644 (file)
@@ -459,7 +459,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2143811867fc6b62c483d75af9d1903a874ba86b..2d409eaa32d93a1b525469d3075a2603e6256a5d 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4e578a6b59a6492689127de41875b2c62350b9ba..58f65c0267fddd159e9183ea8c7aa4b17f98921a 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 839cf2347be561a7190be3167d3be2de4a61f49c..d0598728bf1097ec0cf22a3c3ee74f26f9d2a13f 100644 (file)
@@ -934,7 +934,7 @@ 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 Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e4fcf0648eae1c90b6d7deb8b9a5b2c8f7178e68..8c517f61e616a30313a9561de375fd6fb07c0d77 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9dd637663dc77f5592889b57366fb31d041de65d..4925d6fd326f8e5f6cec7e71657e4106a41d43c2 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 64003608372cc2aa6573d4303c795d002aba2152..fa08e656cb76cd2c9780603e2dd20e08065d8ac2 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1f997bfdda2e6e871b4c1d4d4c198a54a6ec24aa..d78dd8f3347e2bda58d9e3ffe68bd0f906995405 100644 (file)
@@ -241,7 +241,7 @@ object --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d9470ea72cc6b23365bc749e0e2c068ed881b9dc..263d8fda5b516267ad253b67aa929357772940b3 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d7a47371afc383ef5584a7536784a35ae18dda6f..c522ff498846f0453ccf948cf81877520f4da270 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a2b7b19b301117b4de1412f3609999476120e1f0..261d91d145aaf9d3ef5c05acbd3baeefb1e6150f 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 000fff4aa14a3352201bfff58c699cb39ff6d2fc..194a0f23f2900c22c6ae89434a18de66d39c5828 100644 (file)
@@ -238,7 +238,7 @@ IO test cases that apply to both etree and ElementTree
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4b6b5e5513089dc54824ee2ce588efa0d5634686..e9e0e7627c47570d539e36ff2468c668d2fa0edc 100644 (file)
@@ -1157,7 +1157,7 @@ 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 Thu Mar 17 15:04:28 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index afe756da930bef6b36982f785f52658bfb7b8595..8012253d598faafb675a1a17c0b48ba763cda284 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1855f76dcd10de02e21d17e79f3fd9998898d1b5..adb5274cd3bc68f9a857dd44db5d223dc89c21a5 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d9504969951116994e67beb6e891d5a02d802c32..e17e09dde23d2fe3fce3057c027a3588407d6d37 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bd820107d00c27d8a462de6b81ce7f70e69640ff..8d15a67c40b5a71e54d922bf37524d49d2ac7289 100644 (file)
@@ -223,7 +223,7 @@ Test cases related to ISO-Schematron parsing and validation
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e4e57a41cdf3d25da80d2d4b849611e5491d2818..ea701457be0bb11fb9bc9c9cbb0f3aa02f475a95 100644 (file)
@@ -1654,7 +1654,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 81a5a2c46ebeb4f33d8bacb13883d5f42c1f60eb..161904a4e13856abc556689905ca0ebc58bc21d8 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e6ed417d8d3cbcaef1e4bc32f5ca09649ff04cdf..f2e8cbb0cffa1597df667a84238fba3a4c5c30bf 100644 (file)
@@ -224,7 +224,7 @@ namespace registry mechanism
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6bdd49adb73f8981b69e412a08cba846bc88f06b..9ff8649c67c453d9541ec33e3ff2c8266650ec80 100644 (file)
@@ -608,7 +608,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 60417421e763c817fb5920d65b326bbc639e1d47..8e695a5957abbfeb11388655080a65ea154fc263 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 123ec96606b5144387315a9c6d4882de4a7633dd..65dea31004318325fe2c80e6161314a8352de918 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cdcac4168f67e3436e714dbb12f0cdb0c83f0078..ef9676d6df2ef907a746adb951f83577f63be64c 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7e9f63e4eec6368b5811113a4a182bf3de300ec5..4eb0bd595b60de5d25613731a20bfc9b5803d657 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7739a5e64892c90768d48f9babd52fa57662ba55..3c4ab5e87fad71b9a323bb4451654f2512050148 100644 (file)
@@ -275,7 +275,7 @@ Tests specific to the lxml.objectify API
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <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>
+        <a name="v"></a><span class="summary-name">v</span> = <code title="'positiveInteger'"><code class="variable-quote">'</code><code class="variable-string">positiveInteger</code><code class="variable-quote">'</code></code>
     </td>
   </tr>
 </table>
@@ -541,7 +541,7 @@ Tests specific to the lxml.objectify API
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 031e4a57ba9e31511d931739a79b0179e371f995..ae20beb259b5f2be303a8e0d76b4b54e1ad679b5 100644 (file)
@@ -2531,793 +2531,824 @@ lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
 lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1193', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">hash</tt><tt class="py-op">(</tt><tt class="py-number">5.5</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="ObjectifyTestCase.test_data_element_xsitypes"></a><div id="ObjectifyTestCase.test_data_element_xsitypes-def"><a name="L1019"></a><tt class="py-lineno">1019</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_xsitypes-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_xsitypes');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes">test_data_element_xsitypes</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="ObjectifyTestCase.test_data_element_xsitypes-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_xsitypes-expanded"><a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">xsi</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt> <tt class="py-keyword">in</tt> <tt id="link-1194" class="py-name"><a title="lxml.tests.test_objectify.xsitype2objclass" class="py-name" href="#" onclick="return doclink('link-1194', 'xsitype2objclass', 'link-42');">xsitype2objclass</a></tt><tt class="py-op">.</tt><tt id="link-1195" class="py-name"><a title="lxml.etree._Attrib.items
+<a name="ObjectifyTestCase.test_type_float_precision"></a><div id="ObjectifyTestCase.test_type_float_precision-def"><a name="L1019"></a><tt class="py-lineno">1019</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_type_float_precision-toggle" onclick="return toggle('ObjectifyTestCase.test_type_float_precision');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_float_precision">test_type_float_precision</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="ObjectifyTestCase.test_type_float_precision-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_type_float_precision-expanded"><a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">        <tt class="py-comment"># test not losing precision by shortened float str() value</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">        <tt class="py-comment"># repr(2.305064300557): '2.305064300557'</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">        <tt class="py-comment"># str(2.305064300557): '2.30506430056'</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">        <tt class="py-comment"># "%57.54f" % 2.305064300557:</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">        <tt class="py-comment">#     ' 2.305064300556999956626214043353684246540069580078125000'</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">        <tt id="link-1194" 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-1194', 'Element', 'link-79');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1195" 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-1195', 'Element', 'link-79');">Element</a></tt> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">        <tt id="link-1196" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1196', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1197" 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-1197', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}root"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">"2.305064300557"</tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line">        <tt id="link-1198" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1198', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1199" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1199', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-1200" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1200', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1201" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-1201', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-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-1202" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1202', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-1203" 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-1203', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-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-1204" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1204', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-1205" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.objectify.NoneElement.pyval
+lxml.objectify.NumberElement.pyval
+lxml.objectify.ObjectifiedDataElement.pyval
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1205', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_type_float_instantiation_precision"></a><div id="ObjectifyTestCase.test_type_float_instantiation_precision-def"><a name="L1033"></a><tt class="py-lineno">1033</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_type_float_instantiation_precision-toggle" onclick="return toggle('ObjectifyTestCase.test_type_float_instantiation_precision');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_float_instantiation_precision">test_type_float_instantiation_precision</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="ObjectifyTestCase.test_type_float_instantiation_precision-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_type_float_instantiation_precision-expanded"><a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">        <tt class="py-comment"># test precision preservation for FloatElement instantiation</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">"2.305064300557"</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-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-1206" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1206', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1207" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-1207', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">   </tt>
+<a name="ObjectifyTestCase.test_type_float_precision_consistency"></a><div id="ObjectifyTestCase.test_type_float_precision_consistency-def"><a name="L1038"></a><tt class="py-lineno">1038</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_type_float_precision_consistency-toggle" onclick="return toggle('ObjectifyTestCase.test_type_float_precision_consistency');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_float_precision_consistency">test_type_float_precision_consistency</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="ObjectifyTestCase.test_type_float_precision_consistency-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_type_float_precision_consistency-expanded"><a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">        <tt class="py-comment"># test consistent FloatElement values for the different instantiation</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">        <tt class="py-comment"># possibilities</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">        <tt id="link-1208" 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-1208', 'Element', 'link-79');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1209" 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-1209', 'Element', 'link-79');">Element</a></tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">        <tt id="link-1210" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1210', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1211" 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-1211', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}root"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">"2.305064300557"</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">        <tt class="py-name">float_elem</tt> <tt class="py-op">=</tt> <tt id="link-1212" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1212', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1213" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-1213', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">        <tt class="py-name">float_data_elem</tt> <tt class="py-op">=</tt> <tt id="link-1214" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1214', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1215" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1215', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">        <tt id="link-1216" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1216', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">float_child</tt> <tt class="py-op">=</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</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-name">f</tt> <tt class="py-op">==</tt> <tt class="py-name">float_elem</tt> <tt class="py-op">==</tt> <tt class="py-name">float_data_elem</tt> <tt class="py-op">==</tt> <tt id="link-1217" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1217', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">float_child</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_data_element_float_precision"></a><div id="ObjectifyTestCase.test_data_element_float_precision-def"><a name="L1050"></a><tt class="py-lineno">1050</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_float_precision-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_float_precision');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_precision">test_data_element_float_precision</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="ObjectifyTestCase.test_data_element_float_precision-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_float_precision-expanded"><a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">        <tt class="py-comment"># test not losing precision by shortened float str() value</tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-number">2305064300557.0</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">        <tt id="link-1218" 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-1218', 'value', 'link-196');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1219" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1219', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1220" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1220', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-name">f</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1221" 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-1221', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt id="link-1222" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1222', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1223" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-1223', 'FloatElement', 'link-37');">FloatElement</a></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 class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1224" 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-1224', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_data_element_float_hash_repr"></a><div id="ObjectifyTestCase.test_data_element_float_hash_repr-def"><a name="L1057"></a><tt class="py-lineno">1057</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_float_hash_repr-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_float_hash_repr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_hash_repr">test_data_element_float_hash_repr</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="ObjectifyTestCase.test_data_element_float_hash_repr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_float_hash_repr-expanded"><a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line">        <tt class="py-comment"># test not losing precision by shortened float str() value</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-number">2305064300557.0</tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">        <tt id="link-1225" 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-1225', 'value', 'link-196');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1226" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1226', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1227" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1227', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-name">f</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">hash</tt><tt class="py-op">(</tt><tt id="link-1228" 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-1228', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">hash</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_data_element_xsitypes"></a><div id="ObjectifyTestCase.test_data_element_xsitypes-def"><a name="L1063"></a><tt class="py-lineno">1063</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_xsitypes-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_xsitypes');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes">test_data_element_xsitypes</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="ObjectifyTestCase.test_data_element_xsitypes-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_xsitypes-expanded"><a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">xsi</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt> <tt class="py-keyword">in</tt> <tt id="link-1229" class="py-name"><a title="lxml.tests.test_objectify.xsitype2objclass" class="py-name" href="#" onclick="return doclink('link-1229', 'xsitype2objclass', 'link-42');">xsitype2objclass</a></tt><tt class="py-op">.</tt><tt id="link-1230" 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-1195', 'items', 'link-137');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">            <tt class="py-comment"># 1 is a valid value for all ObjectifiedDataElement classes</tt> </tt>
-<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">            <tt id="link-1196" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-1230', 'items', 'link-137');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">            <tt class="py-comment"># 1 is a valid value for all ObjectifiedDataElement classes</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">            <tt id="link-1231" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1196', 'pyval', 'link-360');">pyval</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">            <tt id="link-1197" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1231', 'pyval', 'link-360');">pyval</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">            <tt id="link-1232" 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-1197', 'value', 'link-196');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1198" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1198', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1199" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1199', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt id="link-1200" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1232', 'value', 'link-196');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1233" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1233', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1234" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1234', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt id="link-1235" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1200', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">_xsi</tt><tt class="py-op">=</tt><tt class="py-name">xsi</tt><tt class="py-op">)</tt> </tt>
-<a name="L1024"></a><tt class="py-lineno">1024</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1201" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1235', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">_xsi</tt><tt class="py-op">=</tt><tt class="py-name">xsi</tt><tt class="py-op">)</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1236" 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-1201', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">                         <tt class="py-string">"DataElement(%s, _xsi='%s') returns %s, expected %s"</tt> </tt>
-<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">                         <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-1202" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1236', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">                         <tt class="py-string">"DataElement(%s, _xsi='%s') returns %s, expected %s"</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">                         <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-1237" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1202', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">xsi</tt><tt class="py-op">,</tt> <tt id="link-1203" class="py-name"><a title="lxml.etree._LogEntry.type
-lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-1203', 'type', 'link-506');">type</a></tt><tt class="py-op">(</tt><tt id="link-1204" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1237', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">xsi</tt><tt class="py-op">,</tt> <tt id="link-1238" class="py-name"><a title="lxml.etree._LogEntry.type
+lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-1238', 'type', 'link-506');">type</a></tt><tt class="py-op">(</tt><tt id="link-1239" 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-1204', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">         </tt>
-<a name="ObjectifyTestCase.test_data_element_xsitypes_xsdprefixed"></a><div id="ObjectifyTestCase.test_data_element_xsitypes_xsdprefixed-def"><a name="L1028"></a><tt class="py-lineno">1028</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_xsitypes_xsdprefixed-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_xsitypes_xsdprefixed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes_xsdprefixed">test_data_element_xsitypes_xsdprefixed</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="ObjectifyTestCase.test_data_element_xsitypes_xsdprefixed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_xsitypes_xsdprefixed-expanded"><a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">xsi</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt> <tt class="py-keyword">in</tt> <tt id="link-1205" class="py-name"><a title="lxml.tests.test_objectify.xsitype2objclass" class="py-name" href="#" onclick="return doclink('link-1205', 'xsitype2objclass', 'link-42');">xsitype2objclass</a></tt><tt class="py-op">.</tt><tt id="link-1206" class="py-name"><a title="lxml.etree._Attrib.items
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1239', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">         </tt>
+<a name="ObjectifyTestCase.test_data_element_xsitypes_xsdprefixed"></a><div id="ObjectifyTestCase.test_data_element_xsitypes_xsdprefixed-def"><a name="L1072"></a><tt class="py-lineno">1072</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_xsitypes_xsdprefixed-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_xsitypes_xsdprefixed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes_xsdprefixed">test_data_element_xsitypes_xsdprefixed</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="ObjectifyTestCase.test_data_element_xsitypes_xsdprefixed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_xsitypes_xsdprefixed-expanded"><a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">xsi</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt> <tt class="py-keyword">in</tt> <tt id="link-1240" class="py-name"><a title="lxml.tests.test_objectify.xsitype2objclass" class="py-name" href="#" onclick="return doclink('link-1240', 'xsitype2objclass', 'link-42');">xsitype2objclass</a></tt><tt class="py-op">.</tt><tt id="link-1241" 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-1206', 'items', 'link-137');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">            <tt class="py-comment"># 1 is a valid value for all ObjectifiedDataElement classes</tt> </tt>
-<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">            <tt id="link-1207" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-1241', 'items', 'link-137');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">            <tt class="py-comment"># 1 is a valid value for all ObjectifiedDataElement classes</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">            <tt id="link-1242" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1207', 'pyval', 'link-360');">pyval</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">            <tt id="link-1208" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1242', 'pyval', 'link-360');">pyval</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">            <tt id="link-1243" 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-1208', 'value', 'link-196');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1209" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1209', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1210" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1210', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt id="link-1211" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1243', 'value', 'link-196');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1244" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1244', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1245" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1245', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt id="link-1246" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1211', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">_xsi</tt><tt class="py-op">=</tt><tt class="py-string">"xsd:%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">xsi</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1212" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1246', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">_xsi</tt><tt class="py-op">=</tt><tt class="py-string">"xsd:%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">xsi</tt><tt class="py-op">)</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1247" 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-1212', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">objclass</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 class="py-string">"DataElement(%s, _xsi='%s') returns %s, expected %s"</tt> </tt>
-<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">                         <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-1213" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1247', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">objclass</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-string">"DataElement(%s, _xsi='%s') returns %s, expected %s"</tt> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">                         <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-1248" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1213', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">xsi</tt><tt class="py-op">,</tt> <tt id="link-1214" class="py-name"><a title="lxml.etree._LogEntry.type
-lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-1214', 'type', 'link-506');">type</a></tt><tt class="py-op">(</tt><tt id="link-1215" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1248', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">xsi</tt><tt class="py-op">,</tt> <tt id="link-1249" class="py-name"><a title="lxml.etree._LogEntry.type
+lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-1249', 'type', 'link-506');">type</a></tt><tt class="py-op">(</tt><tt id="link-1250" 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-1215', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">         </tt>
-<a name="ObjectifyTestCase.test_data_element_xsitypes_prefixed"></a><div id="ObjectifyTestCase.test_data_element_xsitypes_prefixed-def"><a name="L1037"></a><tt class="py-lineno">1037</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_xsitypes_prefixed-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_xsitypes_prefixed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes_prefixed">test_data_element_xsitypes_prefixed</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="ObjectifyTestCase.test_data_element_xsitypes_prefixed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_xsitypes_prefixed-expanded"><a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">xsi</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt> <tt class="py-keyword">in</tt> <tt id="link-1216" class="py-name"><a title="lxml.tests.test_objectify.xsitype2objclass" class="py-name" href="#" onclick="return doclink('link-1216', 'xsitype2objclass', 'link-42');">xsitype2objclass</a></tt><tt class="py-op">.</tt><tt id="link-1217" class="py-name"><a title="lxml.etree._Attrib.items
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1250', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">         </tt>
+<a name="ObjectifyTestCase.test_data_element_xsitypes_prefixed"></a><div id="ObjectifyTestCase.test_data_element_xsitypes_prefixed-def"><a name="L1081"></a><tt class="py-lineno">1081</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_xsitypes_prefixed-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_xsitypes_prefixed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes_prefixed">test_data_element_xsitypes_prefixed</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="ObjectifyTestCase.test_data_element_xsitypes_prefixed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_xsitypes_prefixed-expanded"><a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">xsi</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt> <tt class="py-keyword">in</tt> <tt id="link-1251" class="py-name"><a title="lxml.tests.test_objectify.xsitype2objclass" class="py-name" href="#" onclick="return doclink('link-1251', 'xsitype2objclass', 'link-42');">xsitype2objclass</a></tt><tt class="py-op">.</tt><tt id="link-1252" 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-1217', 'items', 'link-137');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">            <tt class="py-comment"># 1 is a valid value for all ObjectifiedDataElement classes</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">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt id="link-1218" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1218', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1219" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1219', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
-<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">                              <tt class="py-name">_xsi</tt><tt class="py-op">=</tt><tt class="py-string">"foo:%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">xsi</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="ObjectifyTestCase.test_data_element_pytypes"></a><div id="ObjectifyTestCase.test_data_element_pytypes-def"><a name="L1043"></a><tt class="py-lineno">1043</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_pytypes-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_pytypes');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytypes">test_data_element_pytypes</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="ObjectifyTestCase.test_data_element_pytypes-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_pytypes-expanded"><a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">pytype</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt> <tt class="py-keyword">in</tt> <tt id="link-1220" class="py-name"><a title="lxml.tests.test_objectify.pytype2objclass" class="py-name" href="#" onclick="return doclink('link-1220', 'pytype2objclass', 'link-56');">pytype2objclass</a></tt><tt class="py-op">.</tt><tt id="link-1221" class="py-name"><a title="lxml.etree._Attrib.items
+lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-1252', 'items', 'link-137');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">            <tt class="py-comment"># 1 is a valid value for all ObjectifiedDataElement classes</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">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt id="link-1253" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1253', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1254" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1254', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">,</tt> <tt class="py-number">1</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">_xsi</tt><tt class="py-op">=</tt><tt class="py-string">"foo:%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">xsi</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_data_element_pytypes"></a><div id="ObjectifyTestCase.test_data_element_pytypes-def"><a name="L1087"></a><tt class="py-lineno">1087</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_pytypes-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_pytypes');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytypes">test_data_element_pytypes</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="ObjectifyTestCase.test_data_element_pytypes-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_pytypes-expanded"><a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">pytype</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt> <tt class="py-keyword">in</tt> <tt id="link-1255" class="py-name"><a title="lxml.tests.test_objectify.pytype2objclass" class="py-name" href="#" onclick="return doclink('link-1255', 'pytype2objclass', 'link-56');">pytype2objclass</a></tt><tt class="py-op">.</tt><tt id="link-1256" 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-1221', 'items', 'link-137');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">            <tt class="py-comment"># 1 is a valid value for all ObjectifiedDataElement classes</tt> </tt>
-<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">            <tt id="link-1222" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-1256', 'items', 'link-137');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">            <tt class="py-comment"># 1 is a valid value for all ObjectifiedDataElement classes</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line">            <tt id="link-1257" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1222', 'pyval', 'link-360');">pyval</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">            <tt id="link-1223" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1257', 'pyval', 'link-360');">pyval</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">            <tt id="link-1258" 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-1223', 'value', 'link-196');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1224" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1224', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1225" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1225', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt id="link-1226" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1258', 'value', 'link-196');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1259" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1259', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1260" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1260', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt id="link-1261" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1226', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">_pytype</tt><tt class="py-op">=</tt><tt class="py-name">pytype</tt><tt class="py-op">)</tt> </tt>
-<a name="L1048"></a><tt class="py-lineno">1048</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1227" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1261', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">_pytype</tt><tt class="py-op">=</tt><tt class="py-name">pytype</tt><tt class="py-op">)</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1262" 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-1227', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line">                         <tt class="py-string">"DataElement(%s, _pytype='%s') returns %s, expected %s"</tt> </tt>
-<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">                         <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-1228" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1262', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">                         <tt class="py-string">"DataElement(%s, _pytype='%s') returns %s, expected %s"</tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">                         <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-1263" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1228', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">pytype</tt><tt class="py-op">,</tt> <tt id="link-1229" class="py-name"><a title="lxml.etree._LogEntry.type
-lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-1229', 'type', 'link-506');">type</a></tt><tt class="py-op">(</tt><tt id="link-1230" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1263', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">pytype</tt><tt class="py-op">,</tt> <tt id="link-1264" class="py-name"><a title="lxml.etree._LogEntry.type
+lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-1264', 'type', 'link-506');">type</a></tt><tt class="py-op">(</tt><tt id="link-1265" 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-1230', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_data_element_pytype_none"></a><div id="ObjectifyTestCase.test_data_element_pytype_none-def"><a name="L1052"></a><tt class="py-lineno">1052</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_pytype_none-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_pytype_none');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytype_none">test_data_element_pytype_none</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="ObjectifyTestCase.test_data_element_pytype_none-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_pytype_none-expanded"><a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">        <tt id="link-1231" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1265', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_data_element_pytype_none"></a><div id="ObjectifyTestCase.test_data_element_pytype_none-def"><a name="L1096"></a><tt class="py-lineno">1096</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_pytype_none-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_pytype_none');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytype_none">test_data_element_pytype_none</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="ObjectifyTestCase.test_data_element_pytype_none-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_pytype_none-expanded"><a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line">        <tt id="link-1266" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1231', 'pyval', 'link-360');">pyval</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt> <tt class="py-op">=</tt> <tt class="py-string">"NoneType"</tt> </tt>
-<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line">        <tt class="py-name">objclass</tt> <tt class="py-op">=</tt> <tt id="link-1232" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1232', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1233" class="py-name"><a title="lxml.objectify.NoneElement" class="py-name" href="#" onclick="return doclink('link-1233', 'NoneElement', 'link-353');">NoneElement</a></tt> </tt>
-<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line">        <tt id="link-1234" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1266', 'pyval', 'link-360');">pyval</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt> <tt class="py-op">=</tt> <tt class="py-string">"NoneType"</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">        <tt class="py-name">objclass</tt> <tt class="py-op">=</tt> <tt id="link-1267" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1267', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1268" class="py-name"><a title="lxml.objectify.NoneElement" class="py-name" href="#" onclick="return doclink('link-1268', 'NoneElement', 'link-353');">NoneElement</a></tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">        <tt id="link-1269" 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-1234', 'value', 'link-196');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1235" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1235', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1236" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1236', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt id="link-1237" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1269', 'value', 'link-196');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1270" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1270', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1271" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1271', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt id="link-1272" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1237', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">_pytype</tt><tt class="py-op">=</tt><tt class="py-name">pytype</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1238" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1272', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">_pytype</tt><tt class="py-op">=</tt><tt class="py-name">pytype</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">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1273" 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-1238', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">objclass</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 class="py-string">"DataElement(%s, _pytype='%s') returns %s, expected %s"</tt> </tt>
-<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">                     <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-1239" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1273', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">                     <tt class="py-string">"DataElement(%s, _pytype='%s') returns %s, expected %s"</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">                     <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-1274" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1239', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">pytype</tt><tt class="py-op">,</tt> <tt id="link-1240" class="py-name"><a title="lxml.etree._LogEntry.type
-lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-1240', 'type', 'link-506');">type</a></tt><tt class="py-op">(</tt><tt id="link-1241" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1274', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">pytype</tt><tt class="py-op">,</tt> <tt id="link-1275" class="py-name"><a title="lxml.etree._LogEntry.type
+lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-1275', 'type', 'link-506');">type</a></tt><tt class="py-op">(</tt><tt id="link-1276" 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-1241', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-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-1242" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1276', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </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 id="link-1277" 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-1242', 'value', 'link-196');">value</a></tt><tt class="py-op">.</tt><tt id="link-1243" class="py-name"><a title="lxml.etree.QName.text
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1277', 'value', 'link-196');">value</a></tt><tt class="py-op">.</tt><tt id="link-1278" 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-1243', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</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-1244" class="py-name"><a title="lxml.html.CheckboxGroup.value
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1278', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</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-1279" 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-1244', 'value', 'link-196');">value</a></tt><tt class="py-op">.</tt><tt id="link-1245" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1279', 'value', 'link-196');">value</a></tt><tt class="py-op">.</tt><tt id="link-1280" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1245', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">             </tt>
-<a name="ObjectifyTestCase.test_data_element_pytype_none_compat"></a><div id="ObjectifyTestCase.test_data_element_pytype_none_compat-def"><a name="L1063"></a><tt class="py-lineno">1063</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_pytype_none_compat-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_pytype_none_compat');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytype_none_compat">test_data_element_pytype_none_compat</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="ObjectifyTestCase.test_data_element_pytype_none_compat-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_pytype_none_compat-expanded"><a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">        <tt class="py-comment"># pre-2.0 lxml called NoneElement "none"</tt> </tt>
-<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">        <tt id="link-1246" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1280', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">             </tt>
+<a name="ObjectifyTestCase.test_data_element_pytype_none_compat"></a><div id="ObjectifyTestCase.test_data_element_pytype_none_compat-def"><a name="L1107"></a><tt class="py-lineno">1107</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_pytype_none_compat-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_pytype_none_compat');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytype_none_compat">test_data_element_pytype_none_compat</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="ObjectifyTestCase.test_data_element_pytype_none_compat-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_pytype_none_compat-expanded"><a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">        <tt class="py-comment"># pre-2.0 lxml called NoneElement "none"</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">        <tt id="link-1281" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1246', 'pyval', 'link-360');">pyval</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt> <tt class="py-op">=</tt> <tt class="py-string">"none"</tt> </tt>
-<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">        <tt class="py-name">objclass</tt> <tt class="py-op">=</tt> <tt id="link-1247" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1247', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1248" class="py-name"><a title="lxml.objectify.NoneElement" class="py-name" href="#" onclick="return doclink('link-1248', 'NoneElement', 'link-353');">NoneElement</a></tt> </tt>
-<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">        <tt id="link-1249" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1281', 'pyval', 'link-360');">pyval</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt> <tt class="py-op">=</tt> <tt class="py-string">"none"</tt> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">        <tt class="py-name">objclass</tt> <tt class="py-op">=</tt> <tt id="link-1282" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1282', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1283" class="py-name"><a title="lxml.objectify.NoneElement" class="py-name" href="#" onclick="return doclink('link-1283', 'NoneElement', 'link-353');">NoneElement</a></tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">        <tt id="link-1284" 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-1249', 'value', 'link-196');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1250" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1250', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1251" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1251', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt id="link-1252" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1284', 'value', 'link-196');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1285" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1285', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1286" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1286', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt id="link-1287" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1252', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">_pytype</tt><tt class="py-op">=</tt><tt class="py-name">pytype</tt><tt class="py-op">)</tt> </tt>
-<a name="L1069"></a><tt class="py-lineno">1069</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1253" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1287', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">_pytype</tt><tt class="py-op">=</tt><tt class="py-name">pytype</tt><tt class="py-op">)</tt> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1288" 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-1253', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">                     <tt class="py-string">"DataElement(%s, _pytype='%s') returns %s, expected %s"</tt> </tt>
-<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">                     <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-1254" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1288', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">                     <tt class="py-string">"DataElement(%s, _pytype='%s') returns %s, expected %s"</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line">                     <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-1289" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1254', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">pytype</tt><tt class="py-op">,</tt> <tt id="link-1255" class="py-name"><a title="lxml.etree._LogEntry.type
-lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-1255', 'type', 'link-506');">type</a></tt><tt class="py-op">(</tt><tt id="link-1256" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1289', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">pytype</tt><tt class="py-op">,</tt> <tt id="link-1290" class="py-name"><a title="lxml.etree._LogEntry.type
+lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-1290', 'type', 'link-506');">type</a></tt><tt class="py-op">(</tt><tt id="link-1291" 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-1256', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-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-1257" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1291', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">objclass</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1292" 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-1257', 'value', 'link-196');">value</a></tt><tt class="py-op">.</tt><tt id="link-1258" class="py-name"><a title="lxml.etree.QName.text
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1292', 'value', 'link-196');">value</a></tt><tt class="py-op">.</tt><tt id="link-1293" 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-1258', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-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-1259" class="py-name"><a title="lxml.html.CheckboxGroup.value
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1293', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</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-1294" 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-1259', 'value', 'link-196');">value</a></tt><tt class="py-op">.</tt><tt id="link-1260" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1294', 'value', 'link-196');">value</a></tt><tt class="py-op">.</tt><tt id="link-1295" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1260', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_type_unregistered"></a><div id="ObjectifyTestCase.test_type_unregistered-def"><a name="L1075"></a><tt class="py-lineno">1075</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_type_unregistered-toggle" onclick="return toggle('ObjectifyTestCase.test_type_unregistered');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_unregistered">test_type_unregistered</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="ObjectifyTestCase.test_type_unregistered-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_type_unregistered-expanded"><a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">        <tt id="link-1261" class="py-name"><a title="lxml.etree.Element
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1295', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_type_unregistered"></a><div id="ObjectifyTestCase.test_type_unregistered-def"><a name="L1119"></a><tt class="py-lineno">1119</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_type_unregistered-toggle" onclick="return toggle('ObjectifyTestCase.test_type_unregistered');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_unregistered">test_type_unregistered</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="ObjectifyTestCase.test_type_unregistered-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_type_unregistered-expanded"><a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">        <tt id="link-1296" 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-1261', 'Element', 'link-79');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1262" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1296', 'Element', 'link-79');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1297" 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-1262', 'Element', 'link-79');">Element</a></tt> </tt>
-<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">        <tt id="link-1263" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1263', 'SubElement', 'link-545');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1264" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1297', 'Element', 'link-79');">Element</a></tt> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">        <tt id="link-1298" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1298', 'SubElement', 'link-545');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1299" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1264', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1265" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1265', 'SubElement', 'link-545');">SubElement</a></tt> </tt>
-<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">MyFloat</tt><tt class="py-op">(</tt><tt class="py-base-class">float</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 class="py-keyword">pass</tt> </tt>
-</div><a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">        <tt id="link-1266" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1266', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1267" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1299', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1300" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1300', 'SubElement', 'link-545');">SubElement</a></tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">MyFloat</tt><tt class="py-op">(</tt><tt class="py-base-class">float</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">        <tt id="link-1301" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1301', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1302" 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-1267', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}root"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line">        <tt id="link-1268" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1268', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">myfloat</tt> <tt class="py-op">=</tt> <tt class="py-name">MyFloat</tt><tt class="py-op">(</tt><tt class="py-number">5.5</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">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1269" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1269', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">myfloat</tt><tt class="py-op">,</tt> <tt id="link-1270" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1270', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1271" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-1271', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">)</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-1272" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1272', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">myfloat</tt><tt class="py-op">.</tt><tt id="link-1273" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1302', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}root"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">        <tt id="link-1303" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1303', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">myfloat</tt> <tt class="py-op">=</tt> <tt class="py-name">MyFloat</tt><tt class="py-op">(</tt><tt class="py-number">5.5</tt><tt class="py-op">)</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1304" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1304', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">myfloat</tt><tt class="py-op">,</tt> <tt id="link-1305" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1305', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1306" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-1306', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-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-1307" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1307', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">myfloat</tt><tt class="py-op">.</tt><tt id="link-1308" 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-1273', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1274" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1274', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1275" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1275', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">None</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="ObjectifyTestCase.test_data_element_unregistered"></a><div id="ObjectifyTestCase.test_data_element_unregistered-def"><a name="L1085"></a><tt class="py-lineno">1085</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_unregistered-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_unregistered');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_unregistered">test_data_element_unregistered</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="ObjectifyTestCase.test_data_element_unregistered-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_unregistered-expanded"><a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">MyFloat</tt><tt class="py-op">(</tt><tt class="py-base-class">float</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">        <tt id="link-1276" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1308', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1309" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1309', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1310" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1310', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_data_element_unregistered"></a><div id="ObjectifyTestCase.test_data_element_unregistered-def"><a name="L1129"></a><tt class="py-lineno">1129</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_data_element_unregistered-toggle" onclick="return toggle('ObjectifyTestCase.test_data_element_unregistered');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_unregistered">test_data_element_unregistered</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="ObjectifyTestCase.test_data_element_unregistered-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_data_element_unregistered-expanded"><a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">MyFloat</tt><tt class="py-op">(</tt><tt class="py-base-class">float</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">        <tt id="link-1311" 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-1276', 'value', 'link-196');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1277" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1277', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1278" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1278', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-name">MyFloat</tt><tt class="py-op">(</tt><tt class="py-number">5.5</tt><tt class="py-op">)</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">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1279" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1311', 'value', 'link-196');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1312" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1312', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1313" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1313', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-name">MyFloat</tt><tt class="py-op">(</tt><tt class="py-number">5.5</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1314" 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-1279', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt id="link-1280" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1280', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1281" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-1281', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">)</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-1282" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1314', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt id="link-1315" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1315', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1316" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-1316', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-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-1317" 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-1282', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt class="py-number">5.5</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-1283" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1317', 'value', 'link-196');">value</a></tt><tt class="py-op">,</tt> <tt class="py-number">5.5</tt><tt class="py-op">)</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-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-1318" 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-1283', 'value', 'link-196');">value</a></tt><tt class="py-op">.</tt><tt id="link-1284" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1318', 'value', 'link-196');">value</a></tt><tt class="py-op">.</tt><tt id="link-1319" 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-1284', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1285" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1285', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1286" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1286', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_schema_types"></a><div id="ObjectifyTestCase.test_schema_types-def"><a name="L1093"></a><tt class="py-lineno">1093</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_schema_types-toggle" onclick="return toggle('ObjectifyTestCase.test_schema_types');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_schema_types">test_schema_types</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="ObjectifyTestCase.test_schema_types-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_schema_types-expanded"><a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">        <tt id="link-1287" 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-1287', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1288" 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-1288', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">        <tt id="link-1289" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1289', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1290" 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-1290', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"><tt class="py-string">        &lt;root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;</tt> </tt>
-<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="boolean"&gt;true&lt;/b&gt;</tt> </tt>
-<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="boolean"&gt;false&lt;/b&gt;</tt> </tt>
-<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="boolean"&gt;1&lt;/b&gt;</tt> </tt>
-<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="boolean"&gt;0&lt;/b&gt;</tt> </tt>
-<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
-<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line"><tt class="py-string">          &lt;f xsi:type="float"&gt;5&lt;/f&gt;</tt> </tt>
-<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line"><tt class="py-string">          &lt;f xsi:type="double"&gt;5&lt;/f&gt;</tt> </tt>
-<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
-<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="normalizedString"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="token"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="language"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="Name"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="NCName"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="ID"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="IDREF"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="ENTITY"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="NMTOKEN"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
-<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="integer"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="nonPositiveInteger"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="negativeInteger"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="long"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="nonNegativeInteger"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="unsignedLong"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="unsignedInt"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="positiveInteger"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line"><tt class="py-string">          </tt> </tt>
-<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="int"&gt;5&lt;/i&gt;</tt> </tt>
-<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="short"&gt;5&lt;/i&gt;</tt> </tt>
-<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="byte"&gt;5&lt;/i&gt;</tt> </tt>
-<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="unsignedShort"&gt;5&lt;/i&gt;</tt> </tt>
-<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="unsignedByte"&gt;5&lt;/i&gt;</tt> </tt>
-<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
-<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true"/&gt;</tt> </tt>
-<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line"><tt class="py-string">        &lt;/root&gt;</tt> </tt>
-<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line"> </tt>
-<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">b</tt> <tt class="py-keyword">in</tt> <tt id="link-1291" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1291', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">:</tt> </tt>
-<a name="L1136"></a><tt class="py-lineno">1136</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt id="link-1292" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1292', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1293" class="py-name"><a title="lxml.objectify.BoolElement" class="py-name" href="#" onclick="return doclink('link-1293', 'BoolElement', 'link-39');">BoolElement</a></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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt>  <tt id="link-1294" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1294', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-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">False</tt><tt class="py-op">,</tt> <tt id="link-1295" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1295', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="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 class="py-name">True</tt><tt class="py-op">,</tt>  <tt id="link-1296" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1296', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</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">False</tt><tt class="py-op">,</tt> <tt id="link-1297" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1297', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</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-keyword">for</tt> <tt class="py-name">f</tt> <tt class="py-keyword">in</tt> <tt id="link-1298" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1298', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">f</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">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-1299" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1299', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1300" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-1300', 'FloatElement', 'link-37');">FloatElement</a></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 class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">5</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">             </tt>
-<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt id="link-1301" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1301', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">s</tt><tt class="py-op">:</tt> </tt>
-<a name="L1147"></a><tt class="py-lineno">1147</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt id="link-1302" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1302', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1303" class="py-name"><a title="lxml.objectify.StringElement" class="py-name" href="#" onclick="return doclink('link-1303', 'StringElement', 'link-41');">StringElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </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 class="py-string">"5"</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line"> </tt>
-<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt id="link-1304" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1304', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">i</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">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt id="link-1305" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1305', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1306" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-1306', 'IntElement', 'link-35');">IntElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-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-number">5</tt><tt class="py-op">,</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
-<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line"> </tt>
-<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">l</tt> <tt class="py-keyword">in</tt> <tt id="link-1307" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1307', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">l</tt><tt class="py-op">:</tt> </tt>
-<a name="L1155"></a><tt class="py-lineno">1155</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt> <tt id="link-1308" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1308', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1309" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-1309', 'IntElement', 'link-35');">IntElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-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-number">5</tt><tt class="py-op">,</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
-<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">             </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">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1310" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1310', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">,</tt> <tt id="link-1311" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1311', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1312" class="py-name"><a title="lxml.objectify.NoneElement" class="py-name" href="#" onclick="return doclink('link-1312', 'NoneElement', 'link-353');">NoneElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-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-1313" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1313', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_schema_types_prefixed"></a><div id="ObjectifyTestCase.test_schema_types_prefixed-def"><a name="L1161"></a><tt class="py-lineno">1161</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_schema_types_prefixed-toggle" onclick="return toggle('ObjectifyTestCase.test_schema_types_prefixed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_schema_types_prefixed">test_schema_types_prefixed</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="ObjectifyTestCase.test_schema_types_prefixed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_schema_types_prefixed-expanded"><a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line">        <tt id="link-1314" 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-1314', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1315" 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-1315', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line">        <tt id="link-1316" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1316', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1317" 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-1317', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line"><tt class="py-string">        &lt;root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
-<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line"><tt class="py-string">        xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;</tt> </tt>
-<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:boolean"&gt;true&lt;/b&gt;</tt> </tt>
-<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:boolean"&gt;false&lt;/b&gt;</tt> </tt>
-<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:boolean"&gt;1&lt;/b&gt;</tt> </tt>
-<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:boolean"&gt;0&lt;/b&gt;</tt> </tt>
-<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
-<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line"><tt class="py-string">          &lt;f xsi:type="xsd:float"&gt;5&lt;/f&gt;</tt> </tt>
-<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line"><tt class="py-string">          &lt;f xsi:type="xsd:double"&gt;5&lt;/f&gt;</tt> </tt>
-<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
-<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:string"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:normalizedString"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:token"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:language"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:Name"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:NCName"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:ID"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:IDREF"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:ENTITY"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:NMTOKEN"&gt;5&lt;/s&gt;</tt> </tt>
-<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
-<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:integer"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:nonPositiveInteger"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:negativeInteger"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:long"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:nonNegativeInteger"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:unsignedLong"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:unsignedInt"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:positiveInteger"&gt;5&lt;/l&gt;</tt> </tt>
-<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line"><tt class="py-string">          </tt> </tt>
-<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="xsd:int"&gt;5&lt;/i&gt;</tt> </tt>
-<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="xsd:short"&gt;5&lt;/i&gt;</tt> </tt>
-<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="xsd:byte"&gt;5&lt;/i&gt;</tt> </tt>
-<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="xsd:unsignedShort"&gt;5&lt;/i&gt;</tt> </tt>
-<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="xsd:unsignedByte"&gt;5&lt;/i&gt;</tt> </tt>
-<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
-<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true"/&gt;</tt> </tt>
-<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line"><tt class="py-string">        &lt;/root&gt;</tt> </tt>
-<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line"><tt class="py-string">        '''</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-keyword">for</tt> <tt class="py-name">b</tt> <tt class="py-keyword">in</tt> <tt id="link-1318" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1318', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt id="link-1319" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1319', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1320" class="py-name"><a title="lxml.objectify.BoolElement" class="py-name" href="#" onclick="return doclink('link-1320', 'BoolElement', 'link-39');">BoolElement</a></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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt>  <tt id="link-1321" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1321', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="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 class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-1322" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1322', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="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 class="py-name">True</tt><tt class="py-op">,</tt>  <tt id="link-1323" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1323', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</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">False</tt><tt class="py-op">,</tt> <tt id="link-1324" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1324', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</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-keyword">for</tt> <tt class="py-name">f</tt> <tt class="py-keyword">in</tt> <tt id="link-1325" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1325', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">f</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">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-1326" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1326', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1327" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-1327', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">)</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 class="py-number">5</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">             </tt>
-<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt id="link-1328" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1328', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">s</tt><tt class="py-op">:</tt> </tt>
-<a name="L1216"></a><tt class="py-lineno">1216</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt id="link-1329" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1329', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1330" class="py-name"><a title="lxml.objectify.StringElement" class="py-name" href="#" onclick="return doclink('link-1330', 'StringElement', 'link-41');">StringElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-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">"5"</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line"> </tt>
-<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt id="link-1331" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1331', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">i</tt><tt class="py-op">:</tt> </tt>
-<a name="L1220"></a><tt class="py-lineno">1220</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt id="link-1332" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1332', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1333" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-1333', 'IntElement', 'link-35');">IntElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-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-number">5</tt><tt class="py-op">,</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
-<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line"> </tt>
-<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">l</tt> <tt class="py-keyword">in</tt> <tt id="link-1334" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1334', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">l</tt><tt class="py-op">:</tt> </tt>
-<a name="L1224"></a><tt class="py-lineno">1224</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt> <tt id="link-1335" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1335', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1336" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-1336', 'IntElement', 'link-35');">IntElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-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-number">5</tt><tt class="py-op">,</tt> <tt class="py-name">l</tt><tt class="py-op">)</tt> </tt>
-<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line">             </tt>
-<a name="L1227"></a><tt class="py-lineno">1227</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1337" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1337', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">,</tt> <tt id="link-1338" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1338', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1339" class="py-name"><a title="lxml.objectify.NoneElement" class="py-name" href="#" onclick="return doclink('link-1339', 'NoneElement', 'link-353');">NoneElement</a></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 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-1340" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1340', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line">         </tt>
-<a name="ObjectifyTestCase.test_type_str_sequence"></a><div id="ObjectifyTestCase.test_type_str_sequence-def"><a name="L1230"></a><tt class="py-lineno">1230</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_type_str_sequence-toggle" onclick="return toggle('ObjectifyTestCase.test_type_str_sequence');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_sequence">test_type_str_sequence</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="ObjectifyTestCase.test_type_str_sequence-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_type_str_sequence-expanded"><a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line">        <tt id="link-1341" 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-1341', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1342" 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-1342', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line">        <tt id="link-1343" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1343', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1344" 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-1344', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1345" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1345', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;&lt;b&gt;why&lt;/b&gt;&lt;b&gt;try&lt;/b&gt;&lt;/root&gt;'</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">strs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt id="link-1346" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-1346', 'str', 'link-461');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt id="link-1347" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1347', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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 class="py-op">[</tt><tt class="py-string">"why"</tt><tt class="py-op">,</tt> <tt class="py-string">"try"</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">strs</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="ObjectifyTestCase.test_type_str_cmp"></a><div id="ObjectifyTestCase.test_type_str_cmp-def"><a name="L1237"></a><tt class="py-lineno">1237</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_type_str_cmp-toggle" onclick="return toggle('ObjectifyTestCase.test_type_str_cmp');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_cmp">test_type_str_cmp</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="ObjectifyTestCase.test_type_str_cmp-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_type_str_cmp-expanded"><a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">        <tt id="link-1348" 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-1348', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1349" 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-1349', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">        <tt id="link-1350" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1350', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1351" 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-1351', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1352" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1352', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;&lt;b&gt;test&lt;/b&gt;&lt;b&gt;taste&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;b/&gt;&lt;/root&gt;'</tt><tt class="py-op">)</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 id="link-1353" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1353', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1354" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1354', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;</tt>  <tt id="link-1355" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1355', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1356" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1356', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1357" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1357', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;=</tt> <tt id="link-1358" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1358', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1359" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1359', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1360" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1360', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1361" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1361', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line"> </tt>
-<a name="L1244"></a><tt class="py-lineno">1244</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-1362" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1362', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1363" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1363', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1245"></a><tt class="py-lineno">1245</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-1364" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1364', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;=</tt> <tt id="link-1365" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1365', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1246"></a><tt class="py-lineno">1246</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-1366" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1366', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;</tt>  <tt id="link-1367" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1367', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1319', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1320" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1320', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1321" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1321', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_schema_types"></a><div id="ObjectifyTestCase.test_schema_types-def"><a name="L1137"></a><tt class="py-lineno">1137</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_schema_types-toggle" onclick="return toggle('ObjectifyTestCase.test_schema_types');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_schema_types">test_schema_types</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="ObjectifyTestCase.test_schema_types-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_schema_types-expanded"><a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">        <tt id="link-1322" 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-1322', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1323" 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-1323', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">        <tt id="link-1324" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1324', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1325" 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-1325', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line"><tt class="py-string">        &lt;root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="boolean"&gt;true&lt;/b&gt;</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="boolean"&gt;false&lt;/b&gt;</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="boolean"&gt;1&lt;/b&gt;</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="boolean"&gt;0&lt;/b&gt;</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line"><tt class="py-string">          &lt;f xsi:type="float"&gt;5&lt;/f&gt;</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line"><tt class="py-string">          &lt;f xsi:type="double"&gt;5&lt;/f&gt;</tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="normalizedString"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="token"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="language"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="Name"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="NCName"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="ID"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="IDREF"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="ENTITY"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="NMTOKEN"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="integer"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="nonPositiveInteger"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="negativeInteger"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="long"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="nonNegativeInteger"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="unsignedLong"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="unsignedInt"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="positiveInteger"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line"><tt class="py-string">          </tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="int"&gt;5&lt;/i&gt;</tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="short"&gt;5&lt;/i&gt;</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="byte"&gt;5&lt;/i&gt;</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="unsignedShort"&gt;5&lt;/i&gt;</tt> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="unsignedByte"&gt;5&lt;/i&gt;</tt> </tt>
+<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true"/&gt;</tt> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line"><tt class="py-string">        &lt;/root&gt;</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>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line"> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">b</tt> <tt class="py-keyword">in</tt> <tt id="link-1326" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1326', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt id="link-1327" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1327', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1328" class="py-name"><a title="lxml.objectify.BoolElement" class="py-name" href="#" onclick="return doclink('link-1328', 'BoolElement', 'link-39');">BoolElement</a></tt><tt class="py-op">)</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">True</tt><tt class="py-op">,</tt>  <tt id="link-1329" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1329', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-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">False</tt><tt class="py-op">,</tt> <tt id="link-1330" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1330', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="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 class="py-name">True</tt><tt class="py-op">,</tt>  <tt id="link-1331" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1331', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</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 class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-1332" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1332', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line"> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">f</tt> <tt class="py-keyword">in</tt> <tt id="link-1333" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1333', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">f</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">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-1334" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1334', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1335" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-1335', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-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-number">5</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line">             </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt id="link-1336" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1336', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">s</tt><tt class="py-op">:</tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt id="link-1337" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1337', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1338" class="py-name"><a title="lxml.objectify.StringElement" class="py-name" href="#" onclick="return doclink('link-1338', 'StringElement', 'link-41');">StringElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-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">"5"</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line"> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt id="link-1339" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1339', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">i</tt><tt class="py-op">:</tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt id="link-1340" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1340', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1341" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-1341', 'IntElement', 'link-35');">IntElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-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-number">5</tt><tt class="py-op">,</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line"> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">l</tt> <tt class="py-keyword">in</tt> <tt id="link-1342" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1342', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">l</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt> <tt id="link-1343" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1343', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1344" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-1344', 'IntElement', 'link-35');">IntElement</a></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 class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">5</tt><tt class="py-op">,</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line">             </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">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1345" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1345', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">,</tt> <tt id="link-1346" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1346', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1347" class="py-name"><a title="lxml.objectify.NoneElement" class="py-name" href="#" onclick="return doclink('link-1347', 'NoneElement', 'link-353');">NoneElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-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-1348" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1348', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_schema_types_prefixed"></a><div id="ObjectifyTestCase.test_schema_types_prefixed-def"><a name="L1205"></a><tt class="py-lineno">1205</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_schema_types_prefixed-toggle" onclick="return toggle('ObjectifyTestCase.test_schema_types_prefixed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_schema_types_prefixed">test_schema_types_prefixed</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="ObjectifyTestCase.test_schema_types_prefixed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_schema_types_prefixed-expanded"><a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line">        <tt id="link-1349" 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-1349', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1350" 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-1350', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line">        <tt id="link-1351" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1351', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1352" 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-1352', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line"><tt class="py-string">        &lt;root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line"><tt class="py-string">        xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;</tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:boolean"&gt;true&lt;/b&gt;</tt> </tt>
+<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:boolean"&gt;false&lt;/b&gt;</tt> </tt>
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:boolean"&gt;1&lt;/b&gt;</tt> </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:boolean"&gt;0&lt;/b&gt;</tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line"><tt class="py-string">          &lt;f xsi:type="xsd:float"&gt;5&lt;/f&gt;</tt> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line"><tt class="py-string">          &lt;f xsi:type="xsd:double"&gt;5&lt;/f&gt;</tt> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:string"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:normalizedString"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:token"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:language"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:Name"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:NCName"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:ID"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:IDREF"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:ENTITY"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:NMTOKEN"&gt;5&lt;/s&gt;</tt> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:integer"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:nonPositiveInteger"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:negativeInteger"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:long"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:nonNegativeInteger"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:unsignedLong"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:unsignedInt"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:positiveInteger"&gt;5&lt;/l&gt;</tt> </tt>
+<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line"><tt class="py-string">          </tt> </tt>
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="xsd:int"&gt;5&lt;/i&gt;</tt> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="xsd:short"&gt;5&lt;/i&gt;</tt> </tt>
+<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="xsd:byte"&gt;5&lt;/i&gt;</tt> </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="xsd:unsignedShort"&gt;5&lt;/i&gt;</tt> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line"><tt class="py-string">          &lt;i xsi:type="xsd:unsignedByte"&gt;5&lt;/i&gt;</tt> </tt>
+<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true"/&gt;</tt> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line"><tt class="py-string">        &lt;/root&gt;</tt> </tt>
+<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
 <a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line"> </tt>
-<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-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-1368" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1368', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-string">"test"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-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-1369" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1369', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line"> </tt>
-<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-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-1370" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1370', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-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-1371" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1371', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-string">""</tt><tt class="py-op">)</tt> </tt>
-<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-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-1372" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1372', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">3</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1373" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1373', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
-<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-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-1374" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1374', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1375" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1375', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">3</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>
-<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line">        <tt id="link-1376" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1376', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-string">"test"</tt> </tt>
-<a name="L1258"></a><tt class="py-lineno">1258</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-1377" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1377', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line">        <tt id="link-1378" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1378', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-string">""</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 id="link-1379" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1379', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1380" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1380', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1381" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1381', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">""</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 class="py-string">""</tt><tt class="py-op">,</tt> <tt id="link-1382" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1382', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="ObjectifyTestCase.test_type_int_cmp"></a><div id="ObjectifyTestCase.test_type_int_cmp-def"><a name="L1264"></a><tt class="py-lineno">1264</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_type_int_cmp-toggle" onclick="return toggle('ObjectifyTestCase.test_type_int_cmp');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_int_cmp">test_type_int_cmp</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="ObjectifyTestCase.test_type_int_cmp-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_type_int_cmp-expanded"><a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line">        <tt id="link-1383" class="py-name"><a title="lxml.etree.XML
+<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">b</tt> <tt class="py-keyword">in</tt> <tt id="link-1353" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1353', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">:</tt> </tt>
+<a name="L1249"></a><tt class="py-lineno">1249</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt id="link-1354" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1354', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1355" class="py-name"><a title="lxml.objectify.BoolElement" class="py-name" href="#" onclick="return doclink('link-1355', 'BoolElement', 'link-39');">BoolElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-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">True</tt><tt class="py-op">,</tt>  <tt id="link-1356" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1356', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-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">False</tt><tt class="py-op">,</tt> <tt id="link-1357" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1357', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-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">True</tt><tt class="py-op">,</tt>  <tt id="link-1358" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1358', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-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">False</tt><tt class="py-op">,</tt> <tt id="link-1359" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1359', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">3</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>
+<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">f</tt> <tt class="py-keyword">in</tt> <tt id="link-1360" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1360', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">f</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">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-1361" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1361', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1362" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-1362', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">)</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-number">5</tt><tt class="py-op">,</tt> <tt class="py-name">f</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-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt id="link-1363" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1363', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">s</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">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt id="link-1364" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1364', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1365" class="py-name"><a title="lxml.objectify.StringElement" class="py-name" href="#" onclick="return doclink('link-1365', 'StringElement', 'link-41');">StringElement</a></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-string">"5"</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line"> </tt>
+<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt id="link-1366" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1366', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">i</tt><tt class="py-op">:</tt> </tt>
+<a name="L1264"></a><tt class="py-lineno">1264</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt id="link-1367" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1367', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1368" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-1368', 'IntElement', 'link-35');">IntElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-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-number">5</tt><tt class="py-op">,</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
+<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line"> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">l</tt> <tt class="py-keyword">in</tt> <tt id="link-1369" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1369', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">l</tt><tt class="py-op">:</tt> </tt>
+<a name="L1268"></a><tt class="py-lineno">1268</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt> <tt id="link-1370" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1370', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1371" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-1371', 'IntElement', 'link-35');">IntElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-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-number">5</tt><tt class="py-op">,</tt> <tt class="py-name">l</tt><tt class="py-op">)</tt> </tt>
+<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line">             </tt>
+<a name="L1271"></a><tt class="py-lineno">1271</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1372" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1372', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">,</tt> <tt id="link-1373" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1373', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1374" class="py-name"><a title="lxml.objectify.NoneElement" class="py-name" href="#" onclick="return doclink('link-1374', 'NoneElement', 'link-353');">NoneElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-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-1375" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1375', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line">         </tt>
+<a name="ObjectifyTestCase.test_type_str_sequence"></a><div id="ObjectifyTestCase.test_type_str_sequence-def"><a name="L1274"></a><tt class="py-lineno">1274</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_type_str_sequence-toggle" onclick="return toggle('ObjectifyTestCase.test_type_str_sequence');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_sequence">test_type_str_sequence</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="ObjectifyTestCase.test_type_str_sequence-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_type_str_sequence-expanded"><a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line">        <tt id="link-1376" 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-1376', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1377" 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-1377', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line">        <tt id="link-1378" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1378', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1379" 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-1379', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1380" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1380', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;&lt;b&gt;why&lt;/b&gt;&lt;b&gt;try&lt;/b&gt;&lt;/root&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line">        <tt class="py-name">strs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt id="link-1381" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-1381', 'str', 'link-461');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt id="link-1382" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1382', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt> <tt class="py-op">]</tt> </tt>
+<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-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-op">[</tt><tt class="py-string">"why"</tt><tt class="py-op">,</tt> <tt class="py-string">"try"</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-name">strs</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="ObjectifyTestCase.test_type_str_cmp"></a><div id="ObjectifyTestCase.test_type_str_cmp-def"><a name="L1281"></a><tt class="py-lineno">1281</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_type_str_cmp-toggle" onclick="return toggle('ObjectifyTestCase.test_type_str_cmp');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_cmp">test_type_str_cmp</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="ObjectifyTestCase.test_type_str_cmp-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_type_str_cmp-expanded"><a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line">        <tt id="link-1383" 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-1383', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1384" 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-1384', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line">        <tt id="link-1385" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1385', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1386" 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-1386', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1387" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1387', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;&lt;b&gt;5&lt;/b&gt;&lt;b&gt;6&lt;/b&gt;&lt;/root&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1267"></a><tt class="py-lineno">1267</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-1388" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1388', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;</tt>  <tt id="link-1389" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1389', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1268"></a><tt class="py-lineno">1268</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-1390" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1390', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;=</tt> <tt id="link-1391" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1391', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1269"></a><tt class="py-lineno">1269</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-1392" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1392', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1393" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1393', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line"> </tt>
-<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1394" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1394', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1395" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1395', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1396" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1396', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1397" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1397', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1398" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1398', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;=</tt> <tt id="link-1399" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1399', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1400" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1400', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1401" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1401', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;</tt>  <tt id="link-1402" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1402', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line"> </tt>
-<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-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-1403" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1403', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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">5</tt><tt class="py-op">)</tt> </tt>
-<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-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-number">5</tt><tt class="py-op">,</tt> <tt id="link-1404" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1404', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt id="link-1405" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1405', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-string">"5"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line"> </tt>
-<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line">        <tt id="link-1406" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1406', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-number">5</tt> </tt>
-<a name="L1280"></a><tt class="py-lineno">1280</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-1407" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1407', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line">        <tt id="link-1408" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1408', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-number">0</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 id="link-1409" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1409', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1410" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1410', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line">    <tt class="py-comment"># float + long share the NumberElement implementation with int</tt> </tt>
-<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_type_bool_cmp"></a><div id="ObjectifyTestCase.test_type_bool_cmp-def"><a name="L1286"></a><tt class="py-lineno">1286</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_type_bool_cmp-toggle" onclick="return toggle('ObjectifyTestCase.test_type_bool_cmp');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_bool_cmp">test_type_bool_cmp</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="ObjectifyTestCase.test_type_bool_cmp-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_type_bool_cmp-expanded"><a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line">        <tt id="link-1411" 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-1411', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1412" 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-1412', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line">        <tt id="link-1413" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1413', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1414" 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-1414', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1415" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1415', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;&lt;b&gt;false&lt;/b&gt;&lt;b&gt;true&lt;/b&gt;&lt;/root&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1289"></a><tt class="py-lineno">1289</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-1416" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1416', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;</tt>  <tt id="link-1417" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1417', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1290"></a><tt class="py-lineno">1290</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-1418" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1418', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;=</tt> <tt id="link-1419" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1419', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1291"></a><tt class="py-lineno">1291</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-1420" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1420', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1421" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1421', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line"> </tt>
-<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1422" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1422', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1423" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1423', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1424" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1424', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1425" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1425', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1426" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1426', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;=</tt> <tt id="link-1427" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1427', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1428" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1428', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1429" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1429', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;</tt>  <tt id="link-1430" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1430', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line"> </tt>
-<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1431" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1431', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1432" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1432', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1298"></a><tt class="py-lineno">1298</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-1433" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1433', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="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-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1434" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1434', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-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">False</tt><tt class="py-op">,</tt> <tt id="link-1435" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1435', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="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-1436" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1436', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;</tt>  <tt class="py-number">5</tt><tt class="py-op">)</tt> </tt>
-<a name="L1303"></a><tt class="py-lineno">1303</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-number">5</tt> <tt class="py-op">&gt;</tt> <tt id="link-1437" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1437', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line"> </tt>
-<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line">        <tt id="link-1438" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1438', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L1306"></a><tt class="py-lineno">1306</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-1439" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1439', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line">        <tt id="link-1440" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1440', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1441" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1441', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1442" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1442', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_type_none_cmp"></a><div id="ObjectifyTestCase.test_type_none_cmp-def"><a name="L1310"></a><tt class="py-lineno">1310</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_type_none_cmp-toggle" onclick="return toggle('ObjectifyTestCase.test_type_none_cmp');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_none_cmp">test_type_none_cmp</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="ObjectifyTestCase.test_type_none_cmp-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_type_none_cmp-expanded"><a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line">        <tt id="link-1443" 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-1443', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1444" 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-1444', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line">        <tt id="link-1445" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1445', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1446" 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-1446', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1447" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1447', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""</tt> </tt>
-<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line"><tt class="py-string">        &lt;root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;</tt> </tt>
-<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:nil="true"&gt;&lt;/b&gt;&lt;b xsi:nil="true"/&gt;</tt> </tt>
-<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line"><tt class="py-string">        &lt;/root&gt;"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1316"></a><tt class="py-lineno">1316</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-1448" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1448', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1449" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1449', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1450" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1450', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1451" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1451', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-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-1452" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1452', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-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-1453" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1453', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="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-comment"># doesn't work in Py3:</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line">        <tt id="link-1385" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1385', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1386" 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-1386', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1387" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1387', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;&lt;b&gt;test&lt;/b&gt;&lt;b&gt;taste&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;b/&gt;&lt;/root&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1388" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1388', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1389" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1389', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;</tt>  <tt id="link-1390" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1390', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1391" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1391', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1392" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1392', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;=</tt> <tt id="link-1393" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1393', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1394" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1394', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1395" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1395', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1396" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1396', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line"> </tt>
+<a name="L1288"></a><tt class="py-lineno">1288</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-1397" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1397', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1398" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1398', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1289"></a><tt class="py-lineno">1289</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-1399" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1399', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;=</tt> <tt id="link-1400" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1400', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1290"></a><tt class="py-lineno">1290</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-1401" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1401', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;</tt>  <tt id="link-1402" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1402', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line"> </tt>
+<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-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-1403" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1403', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-string">"test"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-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-1404" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1404', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="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-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-1405" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1405', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">2</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-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1406" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1406', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-string">""</tt><tt class="py-op">)</tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-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-1407" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1407', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-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-1408" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1408', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-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-1409" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1409', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1410" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1410', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</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 id="link-1411" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1411', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-string">"test"</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-1412" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1412', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line">        <tt id="link-1413" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1413', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-string">""</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 id="link-1414" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1414', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1415" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1415', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">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-1416" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1416', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
+<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-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-1417" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1417', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="ObjectifyTestCase.test_type_int_cmp"></a><div id="ObjectifyTestCase.test_type_int_cmp-def"><a name="L1308"></a><tt class="py-lineno">1308</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_type_int_cmp-toggle" onclick="return toggle('ObjectifyTestCase.test_type_int_cmp');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_int_cmp">test_type_int_cmp</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="ObjectifyTestCase.test_type_int_cmp-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_type_int_cmp-expanded"><a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line">        <tt id="link-1418" 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-1418', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1419" 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-1419', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line">        <tt id="link-1420" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1420', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1421" 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-1421', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1422" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1422', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;&lt;b&gt;5&lt;/b&gt;&lt;b&gt;6&lt;/b&gt;&lt;/root&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1311"></a><tt class="py-lineno">1311</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-1423" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1423', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;</tt>  <tt id="link-1424" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1424', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="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">assertTrue</tt><tt class="py-op">(</tt><tt id="link-1425" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1425', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;=</tt> <tt id="link-1426" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1426', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1313"></a><tt class="py-lineno">1313</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-1427" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1427', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1428" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1428', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="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 class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1429" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1429', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1430" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1430', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1431" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1431', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1432" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1432', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1433" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1433', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;=</tt> <tt id="link-1434" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1434', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1435" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1435', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1436" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1436', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;</tt>  <tt id="link-1437" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1437', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line"> </tt>
+<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-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-1438" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1438', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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">5</tt><tt class="py-op">)</tt> </tt>
+<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-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-number">5</tt><tt class="py-op">,</tt> <tt id="link-1439" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1439', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt id="link-1440" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1440', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-string">"5"</tt><tt class="py-op">)</tt> </tt>
 <a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line"> </tt>
-<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line">        <tt class="py-comment">#for comparison in ["abc", 5, 7.3, True, [], ()]:</tt> </tt>
-<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line">        <tt class="py-comment">#    none = root.b[1]</tt> </tt>
-<a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line">        <tt class="py-comment">#    self.assertTrue(none &lt; comparison, "%s (%s) should be &lt; %s" %</tt> </tt>
-<a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line">        <tt class="py-comment">#                 (none, type(none), comparison) )</tt> </tt>
-<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line">        <tt class="py-comment">#    self.assertTrue(comparison &gt; none, "%s should be &gt; %s (%s)" %</tt> </tt>
-<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">        <tt class="py-comment">#                 (comparison, none, type(none)) )</tt> </tt>
+<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line">        <tt id="link-1441" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1441', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-number">5</tt> </tt>
+<a name="L1324"></a><tt class="py-lineno">1324</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-1442" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1442', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line">        <tt id="link-1443" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1443', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-number">0</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 id="link-1444" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1444', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1445" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1445', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line">         </tt>
+<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">    <tt class="py-comment"># float + long share the NumberElement implementation with int</tt> </tt>
 <a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_dataelement_xsi"></a><div id="ObjectifyTestCase.test_dataelement_xsi-def"><a name="L1330"></a><tt class="py-lineno">1330</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_dataelement_xsi-toggle" onclick="return toggle('ObjectifyTestCase.test_dataelement_xsi');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi">test_dataelement_xsi</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="ObjectifyTestCase.test_dataelement_xsi-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_dataelement_xsi-expanded"><a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1454" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1454', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1455" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1455', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">_xsi</tt><tt class="py-op">=</tt><tt class="py-string">"string"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-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="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1456" class="py-name"><a title="lxml.etree._Attrib.get
+<a name="ObjectifyTestCase.test_type_bool_cmp"></a><div id="ObjectifyTestCase.test_type_bool_cmp-def"><a name="L1330"></a><tt class="py-lineno">1330</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_type_bool_cmp-toggle" onclick="return toggle('ObjectifyTestCase.test_type_bool_cmp');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_bool_cmp">test_type_bool_cmp</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="ObjectifyTestCase.test_type_bool_cmp-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_type_bool_cmp-expanded"><a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">        <tt id="link-1446" 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-1446', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1447" 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-1447', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line">        <tt id="link-1448" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1448', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1449" 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-1449', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1450" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1450', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;&lt;b&gt;false&lt;/b&gt;&lt;b&gt;true&lt;/b&gt;&lt;/root&gt;'</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-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-1451" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1451', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;</tt>  <tt id="link-1452" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1452', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1334"></a><tt class="py-lineno">1334</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-1453" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1453', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;=</tt> <tt id="link-1454" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1454', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1335"></a><tt class="py-lineno">1335</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-1455" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1455', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1456" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1456', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line"> </tt>
+<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1457" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1457', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1458" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1458', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1459" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1459', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1460" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1460', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1461" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1461', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;=</tt> <tt id="link-1462" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1462', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1463" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1463', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1464" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1464', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;</tt>  <tt id="link-1465" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1465', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line"> </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 id="link-1466" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1466', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1467" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1467', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1342"></a><tt class="py-lineno">1342</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-1468" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1468', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line"> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-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-1469" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1469', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-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">False</tt><tt class="py-op">,</tt> <tt id="link-1470" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1470', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1346"></a><tt class="py-lineno">1346</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-1471" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1471', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;</tt>  <tt class="py-number">5</tt><tt class="py-op">)</tt> </tt>
+<a name="L1347"></a><tt class="py-lineno">1347</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-number">5</tt> <tt class="py-op">&gt;</tt> <tt id="link-1472" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1472', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line"> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">        <tt id="link-1473" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1473', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</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-1474" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1474', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line">        <tt id="link-1475" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1475', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1476" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1476', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1477" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1477', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_type_none_cmp"></a><div id="ObjectifyTestCase.test_type_none_cmp-def"><a name="L1354"></a><tt class="py-lineno">1354</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_type_none_cmp-toggle" onclick="return toggle('ObjectifyTestCase.test_type_none_cmp');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_none_cmp">test_type_none_cmp</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="ObjectifyTestCase.test_type_none_cmp-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_type_none_cmp-expanded"><a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line">        <tt id="link-1478" 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-1478', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1479" 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-1479', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line">        <tt id="link-1480" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1480', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1481" 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-1481', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1482" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1482', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""</tt> </tt>
+<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line"><tt class="py-string">        &lt;root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;</tt> </tt>
+<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:nil="true"&gt;&lt;/b&gt;&lt;b xsi:nil="true"/&gt;</tt> </tt>
+<a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line"><tt class="py-string">        &lt;/root&gt;"""</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-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-1483" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1483', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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-1484" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1484', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1485" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1485', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1486" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1486', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="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 id="link-1487" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1487', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-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-1488" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1488', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="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-comment"># doesn't work in Py3:</tt> </tt>
+<a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line"> </tt>
+<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line">        <tt class="py-comment">#for comparison in ["abc", 5, 7.3, True, [], ()]:</tt> </tt>
+<a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line">        <tt class="py-comment">#    none = root.b[1]</tt> </tt>
+<a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line">        <tt class="py-comment">#    self.assertTrue(none &lt; comparison, "%s (%s) should be &lt; %s" %</tt> </tt>
+<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line">        <tt class="py-comment">#                 (none, type(none), comparison) )</tt> </tt>
+<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line">        <tt class="py-comment">#    self.assertTrue(comparison &gt; none, "%s should be &gt; %s (%s)" %</tt> </tt>
+<a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line">        <tt class="py-comment">#                 (comparison, none, type(none)) )</tt> </tt>
+<a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_dataelement_xsi"></a><div id="ObjectifyTestCase.test_dataelement_xsi-def"><a name="L1374"></a><tt class="py-lineno">1374</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_dataelement_xsi-toggle" onclick="return toggle('ObjectifyTestCase.test_dataelement_xsi');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi">test_dataelement_xsi</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="ObjectifyTestCase.test_dataelement_xsi-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_dataelement_xsi-expanded"><a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1489" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1489', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1490" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1490', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">_xsi</tt><tt class="py-op">=</tt><tt class="py-string">"string"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-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="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1491" 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-1456', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1457" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1457', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></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-string">'xsd:string'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_dataelement_xsi_nsmap"></a><div id="ObjectifyTestCase.test_dataelement_xsi_nsmap-def"><a name="L1336"></a><tt class="py-lineno">1336</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_dataelement_xsi_nsmap-toggle" onclick="return toggle('ObjectifyTestCase.test_dataelement_xsi_nsmap');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi_nsmap">test_dataelement_xsi_nsmap</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="ObjectifyTestCase.test_dataelement_xsi_nsmap-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_dataelement_xsi_nsmap-expanded"><a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1458" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1458', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1459" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1459', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">_xsi</tt><tt class="py-op">=</tt><tt class="py-string">"string"</tt><tt class="py-op">,</tt>  </tt>
-<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">                                   <tt id="link-1460" class="py-name"><a title="lxml.etree._Element.nsmap" class="py-name" href="#" onclick="return doclink('link-1460', 'nsmap', 'link-105');">nsmap</a></tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'schema'</tt><tt class="py-op">:</tt> <tt id="link-1461" class="py-name"><a title="lxml.isoschematron.XML_SCHEMA_NS
-lxml.tests.test_objectify.XML_SCHEMA_NS" class="py-name" href="#" onclick="return doclink('link-1461', 'XML_SCHEMA_NS', 'link-22');">XML_SCHEMA_NS</a></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 class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1462" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1491', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1492" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1492', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line">            <tt class="py-string">'xsd:string'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_dataelement_xsi_nsmap"></a><div id="ObjectifyTestCase.test_dataelement_xsi_nsmap-def"><a name="L1380"></a><tt class="py-lineno">1380</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_dataelement_xsi_nsmap-toggle" onclick="return toggle('ObjectifyTestCase.test_dataelement_xsi_nsmap');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi_nsmap">test_dataelement_xsi_nsmap</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="ObjectifyTestCase.test_dataelement_xsi_nsmap-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_dataelement_xsi_nsmap-expanded"><a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1493" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1493', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1494" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1494', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">_xsi</tt><tt class="py-op">=</tt><tt class="py-string">"string"</tt><tt class="py-op">,</tt>  </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line">                                   <tt id="link-1495" class="py-name"><a title="lxml.etree._Element.nsmap" class="py-name" href="#" onclick="return doclink('link-1495', 'nsmap', 'link-105');">nsmap</a></tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'schema'</tt><tt class="py-op">:</tt> <tt id="link-1496" class="py-name"><a title="lxml.isoschematron.XML_SCHEMA_NS
+lxml.tests.test_objectify.XML_SCHEMA_NS" class="py-name" href="#" onclick="return doclink('link-1496', 'XML_SCHEMA_NS', 'link-22');">XML_SCHEMA_NS</a></tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-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="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1497" 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-1462', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1463" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1463', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line">            <tt class="py-string">'schema:string'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_dataelement_xsi_prefix_error"></a><div id="ObjectifyTestCase.test_dataelement_xsi_prefix_error-def"><a name="L1343"></a><tt class="py-lineno">1343</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_dataelement_xsi_prefix_error-toggle" onclick="return toggle('ObjectifyTestCase.test_dataelement_xsi_prefix_error');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi_prefix_error">test_dataelement_xsi_prefix_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="ObjectifyTestCase.test_dataelement_xsi_prefix_error-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_dataelement_xsi_prefix_error-expanded"><a name="L1344"></a><tt class="py-lineno">1344</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 id="link-1464" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1464', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1465" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1465', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
-<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line">                          <tt class="py-name">_xsi</tt><tt class="py-op">=</tt><tt class="py-string">"foo:string"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_pytype_annotation"></a><div id="ObjectifyTestCase.test_pytype_annotation-def"><a name="L1347"></a><tt class="py-lineno">1347</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pytype_annotation-toggle" onclick="return toggle('ObjectifyTestCase.test_pytype_annotation');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation">test_pytype_annotation</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="ObjectifyTestCase.test_pytype_annotation-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pytype_annotation-expanded"><a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line">        <tt id="link-1466" 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-1466', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1467" 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-1467', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">        <tt id="link-1468" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1468', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1469" 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-1469', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1470" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1470', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
-<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
-<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
-<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
-<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
-<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
-<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
-<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
-<a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
-<a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
-<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
-<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
-<a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
-<a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
-<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line">        <tt id="link-1471" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1471', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1472" class="py-name" targets="Function lxml.objectify.annotate()=lxml.objectify-module.html#annotate"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1472', 'annotate', 'link-1472');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1473" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1473', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line"> </tt>
-<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1474" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1497', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1498" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1498', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></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 class="py-string">'schema:string'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_dataelement_xsi_prefix_error"></a><div id="ObjectifyTestCase.test_dataelement_xsi_prefix_error-def"><a name="L1387"></a><tt class="py-lineno">1387</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_dataelement_xsi_prefix_error-toggle" onclick="return toggle('ObjectifyTestCase.test_dataelement_xsi_prefix_error');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi_prefix_error">test_dataelement_xsi_prefix_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="ObjectifyTestCase.test_dataelement_xsi_prefix_error-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_dataelement_xsi_prefix_error-expanded"><a name="L1388"></a><tt class="py-lineno">1388</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 id="link-1499" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1499', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1500" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1500', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line">                          <tt class="py-name">_xsi</tt><tt class="py-op">=</tt><tt class="py-string">"foo:string"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_pytype_annotation"></a><div id="ObjectifyTestCase.test_pytype_annotation-def"><a name="L1391"></a><tt class="py-lineno">1391</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pytype_annotation-toggle" onclick="return toggle('ObjectifyTestCase.test_pytype_annotation');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation">test_pytype_annotation</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="ObjectifyTestCase.test_pytype_annotation-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pytype_annotation-expanded"><a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line">        <tt id="link-1501" 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-1501', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1502" 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-1502', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line">        <tt id="link-1503" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1503', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1504" 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-1504', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1505" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1505', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
+<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
+<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
+<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
+<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
+<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
+<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
+<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
+<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
+<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
+<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
+<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
+<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
+<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
+<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line"><tt class="py-string">        '''</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-1506" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1506', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1507" class="py-name" targets="Function lxml.objectify.annotate()=lxml.objectify-module.html#annotate"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1507', 'annotate', 'link-1507');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1508" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1508', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<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">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1509" 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-1474', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1475" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1475', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1476" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1476', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1477" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1477', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1478" class="py-name" targets="Method lxml.etree._Element.iterchildren()=lxml.etree._Element-class.html#iterchildren"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1478', 'iterchildren', 'link-1478');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
-<a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-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">"bool"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-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">"NoneType"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</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 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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</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-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</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 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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</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 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 class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</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 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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1479" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1479', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1480" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1509', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1510" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1510', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1511" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1511', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1512" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1512', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1513" class="py-name" targets="Method lxml.etree._Element.iterchildren()=lxml.etree._Element-class.html#iterchildren"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1513', 'iterchildren', 'link-1513');">iterchildren</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 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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="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 class="py-string">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</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 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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-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">"bool"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-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">"NoneType"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</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 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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</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 class="py-string">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line">         </tt>
+<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1514" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1514', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1515" 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-1480', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1481" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1481', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</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="ObjectifyTestCase.test_pytype_annotation_empty"></a><div id="ObjectifyTestCase.test_pytype_annotation_empty-def"><a name="L1389"></a><tt class="py-lineno">1389</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pytype_annotation_empty-toggle" onclick="return toggle('ObjectifyTestCase.test_pytype_annotation_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation_empty">test_pytype_annotation_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="ObjectifyTestCase.test_pytype_annotation_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pytype_annotation_empty-expanded"><a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line">        <tt id="link-1482" class="py-name"><a title="lxml.etree.XML
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1515', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1516" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1516', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_pytype_annotation_empty"></a><div id="ObjectifyTestCase.test_pytype_annotation_empty-def"><a name="L1433"></a><tt class="py-lineno">1433</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pytype_annotation_empty-toggle" onclick="return toggle('ObjectifyTestCase.test_pytype_annotation_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation_empty">test_pytype_annotation_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="ObjectifyTestCase.test_pytype_annotation_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pytype_annotation_empty-expanded"><a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line">        <tt id="link-1517" 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-1482', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1483" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1517', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1518" 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-1483', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line">        <tt id="link-1484" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1484', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1485" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1518', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line">        <tt id="link-1519" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1519', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1520" 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-1485', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1486" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1486', '_bytes', 'link-17');">_bytes</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">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
-<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
-<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
-<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
-<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line">        <tt id="link-1487" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1487', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1488" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1488', 'annotate', 'link-1472');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1489" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1489', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line"> </tt>
-<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1490" 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-1490', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1491" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1491', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1492" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1492', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1493" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1493', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1494" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1494', 'iterchildren', 'link-1478');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
-<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-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 class="py-name">child_types</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="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line"> </tt>
-<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line">        <tt id="link-1495" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1495', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1496" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1496', 'annotate', 'link-1472');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1497" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1497', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">empty_pytype</tt><tt class="py-op">=</tt><tt class="py-string">"str"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line"> </tt>
-<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1498" 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-1498', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1499" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1499', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1500" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1500', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1501" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1501', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1502" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1502', 'iterchildren', 'link-1478');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
-<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</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="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_pytype_annotation_use_old"></a><div id="ObjectifyTestCase.test_pytype_annotation_use_old-def"><a name="L1409"></a><tt class="py-lineno">1409</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pytype_annotation_use_old-toggle" onclick="return toggle('ObjectifyTestCase.test_pytype_annotation_use_old');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation_use_old">test_pytype_annotation_use_old</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="ObjectifyTestCase.test_pytype_annotation_use_old-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pytype_annotation_use_old-expanded"><a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line">        <tt id="link-1503" 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-1503', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1504" 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-1504', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line">        <tt id="link-1505" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1505', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1506" 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-1506', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1507" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1507', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
-<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
-<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
-<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
-<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
-<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
-<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
-<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
-<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
-<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
-<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
-<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
-<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
-<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
-<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line">        <tt id="link-1508" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1508', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1509" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1509', 'annotate', 'link-1472');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1510" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1510', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">ignore_old</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line"> </tt>
-<a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1511" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1520', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1521" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1521', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
+<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
+<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
+<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
+<a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line">        <tt id="link-1522" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1522', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1523" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1523', 'annotate', 'link-1507');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1524" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1524', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line"> </tt>
+<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1525" 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-1511', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1512" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1512', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1513" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1513', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1514" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1514', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1515" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1515', 'iterchildren', 'link-1478');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
-<a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</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 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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-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">"bool"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</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-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"NoneType"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</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">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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</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 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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</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-string">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</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 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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-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-1516" class="py-name"><a title="lxml.tests.test_objectify.TREE_PYTYPE" class="py-name" href="#" onclick="return doclink('link-1516', 'TREE_PYTYPE', 'link-28');">TREE_PYTYPE</a></tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line">         </tt>
-<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1517" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1517', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1518" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1525', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1526" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1526', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1527" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1527', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1528" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1528', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1529" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1529', 'iterchildren', 'link-1513');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</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">None</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</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="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line"> </tt>
+<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line">        <tt id="link-1530" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1530', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1531" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1531', 'annotate', 'link-1507');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1532" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1532', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">empty_pytype</tt><tt class="py-op">=</tt><tt class="py-string">"str"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line"> </tt>
+<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1533" 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-1518', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1519" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1519', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_pytype_xsitype_annotation"></a><div id="ObjectifyTestCase.test_pytype_xsitype_annotation-def"><a name="L1451"></a><tt class="py-lineno">1451</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pytype_xsitype_annotation-toggle" onclick="return toggle('ObjectifyTestCase.test_pytype_xsitype_annotation');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_xsitype_annotation">test_pytype_xsitype_annotation</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="ObjectifyTestCase.test_pytype_xsitype_annotation-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pytype_xsitype_annotation-expanded"><a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line">        <tt id="link-1520" 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-1520', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1521" 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-1521', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line">        <tt id="link-1522" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1522', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1523" 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-1523', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1524" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1524', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
-<a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
-<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
-<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
-<a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
-<a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
-<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
-<a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
-<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
-<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
-<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
-<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
-<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
-<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
-<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line">        <tt id="link-1525" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1525', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1526" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1526', 'annotate', 'link-1472');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1527" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1527', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">ignore_old</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">ignore_xsi</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
-<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line">                           <tt class="py-name">annotate_xsi</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">annotate_pytype</tt><tt class="py-op">=</tt><tt class="py-number">1</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-comment"># check py annotations</tt> </tt>
-<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1528" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1533', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1534" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1534', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1535" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1535', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1536" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1536', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1537" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1537', 'iterchildren', 'link-1513');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
+<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</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="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_pytype_annotation_use_old"></a><div id="ObjectifyTestCase.test_pytype_annotation_use_old-def"><a name="L1453"></a><tt class="py-lineno">1453</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pytype_annotation_use_old-toggle" onclick="return toggle('ObjectifyTestCase.test_pytype_annotation_use_old');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation_use_old">test_pytype_annotation_use_old</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="ObjectifyTestCase.test_pytype_annotation_use_old-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pytype_annotation_use_old-expanded"><a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line">        <tt id="link-1538" 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-1538', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1539" 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-1539', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line">        <tt id="link-1540" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1540', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1541" 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-1541', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1542" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1542', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
+<a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
+<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
+<a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
+<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
+<a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
+<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
+<a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
+<a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
+<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
+<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
+<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
+<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
+<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
+<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line"><tt class="py-string">        '''</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 id="link-1543" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1543', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1544" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1544', 'annotate', 'link-1507');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1545" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1545', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">ignore_old</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line"> </tt>
+<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1546" 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-1528', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1529" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1529', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1530" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1530', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1531" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1531', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1532" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1532', 'iterchildren', 'link-1478');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1546', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1547" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1547', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1548" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1548', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1549" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1549', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1550" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1550', 'iterchildren', 'link-1513');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
 <a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
@@ -3329,2119 +3360,2178 @@ lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return
 <a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</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-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"float"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>     <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1533" class="py-name"><a title="lxml.tests.test_objectify.TREE_PYTYPE" class="py-name" href="#" onclick="return doclink('link-1533', 'TREE_PYTYPE', 'link-28');">TREE_PYTYPE</a></tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1551" class="py-name"><a title="lxml.tests.test_objectify.TREE_PYTYPE" class="py-name" href="#" onclick="return doclink('link-1551', 'TREE_PYTYPE', 'link-28');">TREE_PYTYPE</a></tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</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-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"true"</tt><tt class="py-op">,</tt> <tt id="link-1534" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1534', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1535" class="py-name"><a title="lxml.etree._Attrib.get
+<a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1552" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1552', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1553" 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-1553', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1554" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1554', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_pytype_xsitype_annotation"></a><div id="ObjectifyTestCase.test_pytype_xsitype_annotation-def"><a name="L1495"></a><tt class="py-lineno">1495</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pytype_xsitype_annotation-toggle" onclick="return toggle('ObjectifyTestCase.test_pytype_xsitype_annotation');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_xsitype_annotation">test_pytype_xsitype_annotation</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="ObjectifyTestCase.test_pytype_xsitype_annotation-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pytype_xsitype_annotation-expanded"><a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line">        <tt id="link-1555" 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-1555', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1556" 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-1556', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line">        <tt id="link-1557" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1557', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1558" 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-1558', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1559" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1559', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
+<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
+<a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
+<a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
+<a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
+<a name="L1504"></a><tt class="py-lineno">1504</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
+<a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
+<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
+<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
+<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
+<a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
+<a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
+<a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
+<a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
+<a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line"><tt class="py-string">        '''</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 id="link-1560" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1560', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1561" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1561', 'annotate', 'link-1507');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1562" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1562', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">ignore_old</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">ignore_xsi</tt><tt class="py-op">=</tt><tt class="py-name">False</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">annotate_xsi</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">annotate_pytype</tt><tt class="py-op">=</tt><tt class="py-number">1</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-comment"># check py annotations</tt> </tt>
+<a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1563" 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-1563', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1564" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1564', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1565" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1565', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></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">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1566" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1566', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1567" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1567', 'iterchildren', 'link-1513');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</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-string">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</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 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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-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">"bool"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</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 class="py-string">"NoneType"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</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 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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>     <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-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-1568" class="py-name"><a title="lxml.tests.test_objectify.TREE_PYTYPE" class="py-name" href="#" onclick="return doclink('link-1568', 'TREE_PYTYPE', 'link-28');">TREE_PYTYPE</a></tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line">         </tt>
+<a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1569" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1569', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1570" 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-1535', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1536" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1536', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></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>
-<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line">        <tt class="py-name">child_xsitypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1537" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1570', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1571" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1571', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1538"></a><tt class="py-lineno">1538</tt>  <tt class="py-line"> </tt>
+<a name="L1539"></a><tt class="py-lineno">1539</tt>  <tt class="py-line">        <tt class="py-name">child_xsitypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1572" 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-1537', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1538" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1538', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1539" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1539', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1540" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1540', 'iterchildren', 'link-1478');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
-<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-comment"># check xsi annotations</tt> </tt>
-<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1541" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1572', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1573" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1573', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1574" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1574', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1575" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1575', 'iterchildren', 'link-1513');">iterchildren</a></tt><tt class="py-op">(</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>
+<a name="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line">        <tt class="py-comment"># check xsi annotations</tt> </tt>
+<a name="L1543"></a><tt class="py-lineno">1543</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1576" 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-1541', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1542" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1542', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1543" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1543', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1544" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1544', 'iterchildren', 'link-1478');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</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-string">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</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="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</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="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1504"></a><tt class="py-lineno">1504</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-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">"xsd:boolean"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-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">"xsd:float"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-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">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</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>
-<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1545" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1545', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1546" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1576', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1577" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1577', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1544"></a><tt class="py-lineno">1544</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1578" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1578', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1579" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1579', 'iterchildren', 'link-1513');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
+<a name="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-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">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</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="L1546"></a><tt class="py-lineno">1546</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</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="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</tt><tt class="py-op">]</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 class="py-string">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</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 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">"xsd:boolean"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1551"></a><tt class="py-lineno">1551</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-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">"xsd:float"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</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-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</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 class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1559"></a><tt class="py-lineno">1559</tt>  <tt class="py-line"> </tt>
+<a name="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1580" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1580', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1581" 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-1546', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1547" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1547', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1517"></a><tt class="py-lineno">1517</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_xsiannotate_use_old"></a><div id="ObjectifyTestCase.test_xsiannotate_use_old-def"><a name="L1518"></a><tt class="py-lineno">1518</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_xsiannotate_use_old-toggle" onclick="return toggle('ObjectifyTestCase.test_xsiannotate_use_old');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsiannotate_use_old">test_xsiannotate_use_old</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="ObjectifyTestCase.test_xsiannotate_use_old-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_xsiannotate_use_old-expanded"><a name="L1519"></a><tt class="py-lineno">1519</tt>  <tt class="py-line">        <tt id="link-1548" 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-1548', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1549" 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-1549', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line">        <tt id="link-1550" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1550', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1551" 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-1551', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1552" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1552', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
-<a name="L1522"></a><tt class="py-lineno">1522</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
-<a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
-<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
-<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
-<a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
-<a name="L1528"></a><tt class="py-lineno">1528</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
-<a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
-<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
-<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
-<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
-<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
-<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
-<a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
-<a name="L1538"></a><tt class="py-lineno">1538</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1539"></a><tt class="py-lineno">1539</tt>  <tt class="py-line">        <tt id="link-1553" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1553', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1554" class="py-name" targets="Function lxml.objectify.xsiannotate()=lxml.objectify-module.html#xsiannotate"><a title="lxml.objectify.xsiannotate" class="py-name" href="#" onclick="return doclink('link-1554', 'xsiannotate', 'link-1554');">xsiannotate</a></tt><tt class="py-op">(</tt><tt id="link-1555" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1555', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">ignore_old</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line"> </tt>
-<a name="L1541"></a><tt class="py-lineno">1541</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1556" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1581', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1582" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1582', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_xsiannotate_use_old"></a><div id="ObjectifyTestCase.test_xsiannotate_use_old-def"><a name="L1562"></a><tt class="py-lineno">1562</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_xsiannotate_use_old-toggle" onclick="return toggle('ObjectifyTestCase.test_xsiannotate_use_old');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsiannotate_use_old">test_xsiannotate_use_old</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="ObjectifyTestCase.test_xsiannotate_use_old-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_xsiannotate_use_old-expanded"><a name="L1563"></a><tt class="py-lineno">1563</tt>  <tt class="py-line">        <tt id="link-1583" 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-1583', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1584" 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-1584', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1564"></a><tt class="py-lineno">1564</tt>  <tt class="py-line">        <tt id="link-1585" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1585', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1586" 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-1586', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1587" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1587', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1565"></a><tt class="py-lineno">1565</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
+<a name="L1566"></a><tt class="py-lineno">1566</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
+<a name="L1567"></a><tt class="py-lineno">1567</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1568"></a><tt class="py-lineno">1568</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
+<a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
+<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
+<a name="L1571"></a><tt class="py-lineno">1571</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
+<a name="L1572"></a><tt class="py-lineno">1572</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
+<a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
+<a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1575"></a><tt class="py-lineno">1575</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1576"></a><tt class="py-lineno">1576</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
+<a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
+<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
+<a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
+<a name="L1580"></a><tt class="py-lineno">1580</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
+<a name="L1581"></a><tt class="py-lineno">1581</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
+<a name="L1582"></a><tt class="py-lineno">1582</tt>  <tt class="py-line"><tt class="py-string">        '''</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 id="link-1588" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1588', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1589" class="py-name" targets="Function lxml.objectify.xsiannotate()=lxml.objectify-module.html#xsiannotate"><a title="lxml.objectify.xsiannotate" class="py-name" href="#" onclick="return doclink('link-1589', 'xsiannotate', 'link-1589');">xsiannotate</a></tt><tt class="py-op">(</tt><tt id="link-1590" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1590', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">ignore_old</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<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">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1591" 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-1556', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1557" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1557', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></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">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1558" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1558', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1559" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1559', 'iterchildren', 'link-1478');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</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 class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</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="L1544"></a><tt class="py-lineno">1544</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</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="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</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 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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-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">"xsd:boolean"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</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 class="py-name">None</tt><tt class="py-op">,</tt>          <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</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 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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1551"></a><tt class="py-lineno">1551</tt>  <tt class="py-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">"xsd:float"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-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">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</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-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 class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_pyannotate_ignore_old"></a><div id="ObjectifyTestCase.test_pyannotate_ignore_old-def"><a name="L1558"></a><tt class="py-lineno">1558</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pyannotate_ignore_old-toggle" onclick="return toggle('ObjectifyTestCase.test_pyannotate_ignore_old');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_ignore_old">test_pyannotate_ignore_old</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="ObjectifyTestCase.test_pyannotate_ignore_old-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pyannotate_ignore_old-expanded"><a name="L1559"></a><tt class="py-lineno">1559</tt>  <tt class="py-line">        <tt id="link-1560" 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-1560', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1561" 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-1561', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-line">        <tt id="link-1562" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1562', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1563" 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-1563', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1564" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1564', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
-<a name="L1562"></a><tt class="py-lineno">1562</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
-<a name="L1563"></a><tt class="py-lineno">1563</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1564"></a><tt class="py-lineno">1564</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
-<a name="L1565"></a><tt class="py-lineno">1565</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
-<a name="L1566"></a><tt class="py-lineno">1566</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
-<a name="L1567"></a><tt class="py-lineno">1567</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
-<a name="L1568"></a><tt class="py-lineno">1568</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
-<a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
-<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1571"></a><tt class="py-lineno">1571</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1572"></a><tt class="py-lineno">1572</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
-<a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
-<a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
-<a name="L1575"></a><tt class="py-lineno">1575</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
-<a name="L1576"></a><tt class="py-lineno">1576</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
-<a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
-<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line">        <tt id="link-1565" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1565', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1566" class="py-name" targets="Function lxml.objectify.pyannotate()=lxml.objectify-module.html#pyannotate"><a title="lxml.objectify.pyannotate" class="py-name" href="#" onclick="return doclink('link-1566', 'pyannotate', 'link-1566');">pyannotate</a></tt><tt class="py-op">(</tt><tt id="link-1567" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1567', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">ignore_old</tt><tt class="py-op">=</tt><tt class="py-name">True</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-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1568" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1591', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1592" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1592', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1586"></a><tt class="py-lineno">1586</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1593" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1593', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1594" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1594', 'iterchildren', 'link-1513');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
+<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-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">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</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="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-string">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</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="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1590"></a><tt class="py-lineno">1590</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-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">"xsd:boolean"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1593"></a><tt class="py-lineno">1593</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1595"></a><tt class="py-lineno">1595</tt>  <tt class="py-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">"xsd:float"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1596"></a><tt class="py-lineno">1596</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1597"></a><tt class="py-lineno">1597</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-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">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1600"></a><tt class="py-lineno">1600</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1601"></a><tt class="py-lineno">1601</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_pyannotate_ignore_old"></a><div id="ObjectifyTestCase.test_pyannotate_ignore_old-def"><a name="L1602"></a><tt class="py-lineno">1602</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pyannotate_ignore_old-toggle" onclick="return toggle('ObjectifyTestCase.test_pyannotate_ignore_old');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_ignore_old">test_pyannotate_ignore_old</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="ObjectifyTestCase.test_pyannotate_ignore_old-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pyannotate_ignore_old-expanded"><a name="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line">        <tt id="link-1595" 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-1595', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1596" 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-1596', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line">        <tt id="link-1597" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1597', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1598" 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-1598', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1599" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1599', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
+<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
+<a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
+<a name="L1609"></a><tt class="py-lineno">1609</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
+<a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
+<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
+<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
+<a name="L1613"></a><tt class="py-lineno">1613</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
+<a name="L1614"></a><tt class="py-lineno">1614</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1615"></a><tt class="py-lineno">1615</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1616"></a><tt class="py-lineno">1616</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
+<a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
+<a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
+<a name="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
+<a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
+<a name="L1621"></a><tt class="py-lineno">1621</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
+<a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1623"></a><tt class="py-lineno">1623</tt>  <tt class="py-line">        <tt id="link-1600" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1600', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1601" class="py-name" targets="Function lxml.objectify.pyannotate()=lxml.objectify-module.html#pyannotate"><a title="lxml.objectify.pyannotate" class="py-name" href="#" onclick="return doclink('link-1601', 'pyannotate', 'link-1601');">pyannotate</a></tt><tt class="py-op">(</tt><tt id="link-1602" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1602', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">ignore_old</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-line"> </tt>
+<a name="L1625"></a><tt class="py-lineno">1625</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1603" 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-1568', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1569" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1569', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1570" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1570', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></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">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1571" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1571', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1572" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1572', 'iterchildren', 'link-1478');">iterchildren</a></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 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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1584"></a><tt class="py-lineno">1584</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="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-string">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</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 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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-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">"bool"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</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-string">"NoneType"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</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 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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1590"></a><tt class="py-lineno">1590</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1593"></a><tt class="py-lineno">1593</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1595"></a><tt class="py-lineno">1595</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1596"></a><tt class="py-lineno">1596</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1597"></a><tt class="py-lineno">1597</tt>  <tt class="py-line">         </tt>
-<a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1573" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1573', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1574" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1603', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1604" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1604', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1605" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1605', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1606" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1606', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1607" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1607', 'iterchildren', 'link-1513');">iterchildren</a></tt><tt class="py-op">(</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-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1628"></a><tt class="py-lineno">1628</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</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">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</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 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">"bool"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</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 class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"NoneType"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</tt><tt class="py-op">]</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">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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</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 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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</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-string">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</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 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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1641"></a><tt class="py-lineno">1641</tt>  <tt class="py-line">         </tt>
+<a name="L1642"></a><tt class="py-lineno">1642</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1608" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1608', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1609" 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-1574', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1575" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1575', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_pyannotate_empty"></a><div id="ObjectifyTestCase.test_pyannotate_empty-def"><a name="L1600"></a><tt class="py-lineno">1600</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pyannotate_empty-toggle" onclick="return toggle('ObjectifyTestCase.test_pyannotate_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_empty">test_pyannotate_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="ObjectifyTestCase.test_pyannotate_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pyannotate_empty-expanded"><a name="L1601"></a><tt class="py-lineno">1601</tt>  <tt class="py-line">        <tt id="link-1576" class="py-name"><a title="lxml.etree.XML
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1609', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1610" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1610', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1643"></a><tt class="py-lineno">1643</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_pyannotate_empty"></a><div id="ObjectifyTestCase.test_pyannotate_empty-def"><a name="L1644"></a><tt class="py-lineno">1644</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pyannotate_empty-toggle" onclick="return toggle('ObjectifyTestCase.test_pyannotate_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_empty">test_pyannotate_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="ObjectifyTestCase.test_pyannotate_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pyannotate_empty-expanded"><a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-line">        <tt id="link-1611" 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-1576', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1577" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1611', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1612" 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-1577', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1602"></a><tt class="py-lineno">1602</tt>  <tt class="py-line">        <tt id="link-1578" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1578', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1579" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1612', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-line">        <tt id="link-1613" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1613', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1614" 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-1579', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
-<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
-<a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
-<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
-<a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line">        <tt id="link-1580" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1580', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1581" class="py-name"><a title="lxml.objectify.pyannotate" class="py-name" href="#" onclick="return doclink('link-1581', 'pyannotate', 'link-1566');">pyannotate</a></tt><tt class="py-op">(</tt><tt id="link-1582" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1582', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1609"></a><tt class="py-lineno">1609</tt>  <tt class="py-line"> </tt>
-<a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1583" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1614', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1647"></a><tt class="py-lineno">1647</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
+<a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
+<a name="L1649"></a><tt class="py-lineno">1649</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
+<a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
+<a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1652"></a><tt class="py-lineno">1652</tt>  <tt class="py-line">        <tt id="link-1615" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1615', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1616" class="py-name"><a title="lxml.objectify.pyannotate" class="py-name" href="#" onclick="return doclink('link-1616', 'pyannotate', 'link-1601');">pyannotate</a></tt><tt class="py-op">(</tt><tt id="link-1617" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1617', 'root', 'link-144');">root</a></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-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1618" 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-1583', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1584" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1584', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1585" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1585', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1586" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1586', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1587" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1587', 'iterchildren', 'link-1478');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
-<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-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 class="py-name">child_types</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="L1613"></a><tt class="py-lineno">1613</tt>  <tt class="py-line"> </tt>
-<a name="L1614"></a><tt class="py-lineno">1614</tt>  <tt class="py-line">        <tt id="link-1588" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1588', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1589" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1589', 'annotate', 'link-1472');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1590" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1590', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">empty_pytype</tt><tt class="py-op">=</tt><tt class="py-string">"str"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1615"></a><tt class="py-lineno">1615</tt>  <tt class="py-line"> </tt>
-<a name="L1616"></a><tt class="py-lineno">1616</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1591" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1618', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1619" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1619', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1620" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1620', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></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">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1621" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1621', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1622" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1622', 'iterchildren', 'link-1513');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
+<a name="L1656"></a><tt class="py-lineno">1656</tt>  <tt class="py-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 class="py-name">child_types</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="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 id="link-1623" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1623', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1624" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1624', 'annotate', 'link-1507');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1625" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1625', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">empty_pytype</tt><tt class="py-op">=</tt><tt class="py-string">"str"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line"> </tt>
+<a name="L1660"></a><tt class="py-lineno">1660</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1626" 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-1591', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1592" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1592', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1593" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1593', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1594" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1594', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1595" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1595', 'iterchildren', 'link-1478');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
-<a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</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="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_pyannotate_use_old"></a><div id="ObjectifyTestCase.test_pyannotate_use_old-def"><a name="L1620"></a><tt class="py-lineno">1620</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pyannotate_use_old-toggle" onclick="return toggle('ObjectifyTestCase.test_pyannotate_use_old');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_use_old">test_pyannotate_use_old</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="ObjectifyTestCase.test_pyannotate_use_old-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pyannotate_use_old-expanded"><a name="L1621"></a><tt class="py-lineno">1621</tt>  <tt class="py-line">        <tt id="link-1596" 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-1596', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1597" 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-1597', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line">        <tt id="link-1598" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1598', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1599" 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-1599', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1623"></a><tt class="py-lineno">1623</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
-<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
-<a name="L1625"></a><tt class="py-lineno">1625</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
-<a name="L1627"></a><tt class="py-lineno">1627</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
-<a name="L1628"></a><tt class="py-lineno">1628</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
-<a name="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
-<a name="L1630"></a><tt class="py-lineno">1630</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
-<a name="L1631"></a><tt class="py-lineno">1631</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
-<a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1633"></a><tt class="py-lineno">1633</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
-<a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
-<a name="L1636"></a><tt class="py-lineno">1636</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
-<a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
-<a name="L1638"></a><tt class="py-lineno">1638</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
-<a name="L1639"></a><tt class="py-lineno">1639</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
-<a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1641"></a><tt class="py-lineno">1641</tt>  <tt class="py-line">        <tt id="link-1600" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1600', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1601" class="py-name"><a title="lxml.objectify.pyannotate" class="py-name" href="#" onclick="return doclink('link-1601', 'pyannotate', 'link-1566');">pyannotate</a></tt><tt class="py-op">(</tt><tt id="link-1602" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1602', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1642"></a><tt class="py-lineno">1642</tt>  <tt class="py-line"> </tt>
-<a name="L1643"></a><tt class="py-lineno">1643</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1603" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1626', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1627" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1627', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1628" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1628', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1661"></a><tt class="py-lineno">1661</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1629" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1629', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1630" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1630', 'iterchildren', 'link-1513');">iterchildren</a></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">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"str"</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</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="L1663"></a><tt class="py-lineno">1663</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_pyannotate_use_old"></a><div id="ObjectifyTestCase.test_pyannotate_use_old-def"><a name="L1664"></a><tt class="py-lineno">1664</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pyannotate_use_old-toggle" onclick="return toggle('ObjectifyTestCase.test_pyannotate_use_old');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_use_old">test_pyannotate_use_old</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="ObjectifyTestCase.test_pyannotate_use_old-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pyannotate_use_old-expanded"><a name="L1665"></a><tt class="py-lineno">1665</tt>  <tt class="py-line">        <tt id="link-1631" 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-1631', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1632" 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-1632', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line">        <tt id="link-1633" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1633', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1634" 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-1634', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1667"></a><tt class="py-lineno">1667</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
+<a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
+<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
+<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
+<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
+<a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
+<a name="L1674"></a><tt class="py-lineno">1674</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
+<a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
+<a name="L1676"></a><tt class="py-lineno">1676</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
+<a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
+<a name="L1680"></a><tt class="py-lineno">1680</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
+<a name="L1681"></a><tt class="py-lineno">1681</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
+<a name="L1682"></a><tt class="py-lineno">1682</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
+<a name="L1683"></a><tt class="py-lineno">1683</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
+<a name="L1684"></a><tt class="py-lineno">1684</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1685"></a><tt class="py-lineno">1685</tt>  <tt class="py-line">        <tt id="link-1635" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1635', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1636" class="py-name"><a title="lxml.objectify.pyannotate" class="py-name" href="#" onclick="return doclink('link-1636', 'pyannotate', 'link-1601');">pyannotate</a></tt><tt class="py-op">(</tt><tt id="link-1637" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1637', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line"> </tt>
+<a name="L1687"></a><tt class="py-lineno">1687</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1638" 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-1603', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1604" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1604', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1605" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1605', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1644"></a><tt class="py-lineno">1644</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1606" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1606', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1607" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1607', 'iterchildren', 'link-1478');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
-<a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1647"></a><tt class="py-lineno">1647</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"bool"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-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">"NoneType"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</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">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1652"></a><tt class="py-lineno">1652</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</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 class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</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-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1656"></a><tt class="py-lineno">1656</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</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 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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</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-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1608" class="py-name"><a title="lxml.tests.test_objectify.TREE_PYTYPE" class="py-name" href="#" onclick="return doclink('link-1608', 'TREE_PYTYPE', 'link-28');">TREE_PYTYPE</a></tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</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>
-<a name="L1660"></a><tt class="py-lineno">1660</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1609" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1609', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1610" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1638', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1639" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1639', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1640" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1640', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1688"></a><tt class="py-lineno">1688</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1641" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1641', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1642" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1642', 'iterchildren', 'link-1513');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
+<a name="L1689"></a><tt class="py-lineno">1689</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1692"></a><tt class="py-lineno">1692</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1693"></a><tt class="py-lineno">1693</tt>  <tt class="py-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">"bool"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-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">"NoneType"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</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-1643" class="py-name"><a title="lxml.tests.test_objectify.TREE_PYTYPE" class="py-name" href="#" onclick="return doclink('link-1643', 'TREE_PYTYPE', 'link-28');">TREE_PYTYPE</a></tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line">         </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 class="py-string">"true"</tt><tt class="py-op">,</tt> <tt id="link-1644" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1644', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1645" 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-1610', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1611" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1611', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></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="ObjectifyTestCase.test_xsiannotate_ignore_old"></a><div id="ObjectifyTestCase.test_xsiannotate_ignore_old-def"><a name="L1662"></a><tt class="py-lineno">1662</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_xsiannotate_ignore_old-toggle" onclick="return toggle('ObjectifyTestCase.test_xsiannotate_ignore_old');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsiannotate_ignore_old">test_xsiannotate_ignore_old</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="ObjectifyTestCase.test_xsiannotate_ignore_old-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_xsiannotate_ignore_old-expanded"><a name="L1663"></a><tt class="py-lineno">1663</tt>  <tt class="py-line">        <tt id="link-1612" 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-1612', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1613" 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-1613', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-line">        <tt id="link-1614" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1614', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1615" 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-1615', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1616" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1616', '_bytes', 'link-17');">_bytes</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">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
-<a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
-<a name="L1667"></a><tt class="py-lineno">1667</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
-<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
-<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
-<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
-<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
-<a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
-<a name="L1674"></a><tt class="py-lineno">1674</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1676"></a><tt class="py-lineno">1676</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
-<a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
-<a name="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
-<a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
-<a name="L1680"></a><tt class="py-lineno">1680</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
-<a name="L1681"></a><tt class="py-lineno">1681</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
-<a name="L1682"></a><tt class="py-lineno">1682</tt>  <tt class="py-line"><tt class="py-string">        '''</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 id="link-1617" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1617', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1618" class="py-name"><a title="lxml.objectify.xsiannotate" class="py-name" href="#" onclick="return doclink('link-1618', 'xsiannotate', 'link-1554');">xsiannotate</a></tt><tt class="py-op">(</tt><tt id="link-1619" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1619', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">ignore_old</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
-<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 class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1620" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1645', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1646" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1646', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line">         </tt>
+<a name="ObjectifyTestCase.test_xsiannotate_ignore_old"></a><div id="ObjectifyTestCase.test_xsiannotate_ignore_old-def"><a name="L1706"></a><tt class="py-lineno">1706</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_xsiannotate_ignore_old-toggle" onclick="return toggle('ObjectifyTestCase.test_xsiannotate_ignore_old');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsiannotate_ignore_old">test_xsiannotate_ignore_old</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="ObjectifyTestCase.test_xsiannotate_ignore_old-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_xsiannotate_ignore_old-expanded"><a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line">        <tt id="link-1647" 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-1647', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1648" 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-1648', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line">        <tt id="link-1649" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1649', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1650" 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-1650', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1651" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1651', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
+<a name="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
+<a name="L1711"></a><tt class="py-lineno">1711</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
+<a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
+<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
+<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
+<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
+<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
+<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
+<a name="L1721"></a><tt class="py-lineno">1721</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
+<a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
+<a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
+<a name="L1724"></a><tt class="py-lineno">1724</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
+<a name="L1725"></a><tt class="py-lineno">1725</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</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 id="link-1652" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1652', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1653" class="py-name"><a title="lxml.objectify.xsiannotate" class="py-name" href="#" onclick="return doclink('link-1653', 'xsiannotate', 'link-1589');">xsiannotate</a></tt><tt class="py-op">(</tt><tt id="link-1654" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1654', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">ignore_old</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line"> </tt>
+<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1655" 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-1620', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1621" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1621', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1622" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1622', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1623" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1623', 'iterchildren', 'link-1478');">iterchildren</a></tt><tt class="py-op">(</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</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="L1688"></a><tt class="py-lineno">1688</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</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="L1689"></a><tt class="py-lineno">1689</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-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">"xsd:boolean"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1692"></a><tt class="py-lineno">1692</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1693"></a><tt class="py-lineno">1693</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-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">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-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">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-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">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-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">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"true"</tt><tt class="py-op">,</tt> <tt id="link-1624" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1624', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1625" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1655', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1656" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1656', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1730"></a><tt class="py-lineno">1730</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1657" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1657', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1658" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1658', 'iterchildren', 'link-1513');">iterchildren</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</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="L1732"></a><tt class="py-lineno">1732</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</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="L1733"></a><tt class="py-lineno">1733</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</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-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"xsd:boolean"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</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">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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1737"></a><tt class="py-lineno">1737</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1739"></a><tt class="py-lineno">1739</tt>  <tt class="py-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">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</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-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"xsd:string"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</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 class="py-string">"xsd:double"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1743"></a><tt class="py-lineno">1743</tt>  <tt class="py-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">"xsd:integer"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1744"></a><tt class="py-lineno">1744</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1745"></a><tt class="py-lineno">1745</tt>  <tt class="py-line"> </tt>
+<a name="L1746"></a><tt class="py-lineno">1746</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1659" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1659', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1660" 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-1625', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1626" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1626', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_deannotate"></a><div id="ObjectifyTestCase.test_deannotate-def"><a name="L1704"></a><tt class="py-lineno">1704</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_deannotate-toggle" onclick="return toggle('ObjectifyTestCase.test_deannotate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_deannotate">test_deannotate</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="ObjectifyTestCase.test_deannotate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_deannotate-expanded"><a name="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line">        <tt id="link-1627" 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-1627', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1628" 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-1628', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1706"></a><tt class="py-lineno">1706</tt>  <tt class="py-line">        <tt id="link-1629" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1629', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1630" 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-1630', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1631" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1631', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
-<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
-<a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
-<a name="L1711"></a><tt class="py-lineno">1711</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
-<a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
-<a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
-<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
-<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
-<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
-<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
-<a name="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
-<a name="L1721"></a><tt class="py-lineno">1721</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
-<a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
-<a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</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 id="link-1632" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1632', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1633" class="py-name" targets="Function lxml.objectify.deannotate()=lxml.objectify-module.html#deannotate"><a title="lxml.objectify.deannotate" class="py-name" href="#" onclick="return doclink('link-1633', 'deannotate', 'link-1633');">deannotate</a></tt><tt class="py-op">(</tt><tt id="link-1634" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1634', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<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 class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1635" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1635', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1636" class="py-name" targets="Method lxml.etree._Element.getiterator()=lxml.etree._Element-class.html#getiterator,Method lxml.etree._ElementTree.getiterator()=lxml.etree._ElementTree-class.html#getiterator"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1636', 'getiterator', 'link-1636');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-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 class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1637" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1660', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1661" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1661', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1747"></a><tt class="py-lineno">1747</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_deannotate"></a><div id="ObjectifyTestCase.test_deannotate-def"><a name="L1748"></a><tt class="py-lineno">1748</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_deannotate-toggle" onclick="return toggle('ObjectifyTestCase.test_deannotate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_deannotate">test_deannotate</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="ObjectifyTestCase.test_deannotate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_deannotate-expanded"><a name="L1749"></a><tt class="py-lineno">1749</tt>  <tt class="py-line">        <tt id="link-1662" 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-1662', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1663" 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-1663', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1750"></a><tt class="py-lineno">1750</tt>  <tt class="py-line">        <tt id="link-1664" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1664', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1665" 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-1665', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1666" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1666', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1751"></a><tt class="py-lineno">1751</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
+<a name="L1752"></a><tt class="py-lineno">1752</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
+<a name="L1753"></a><tt class="py-lineno">1753</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1754"></a><tt class="py-lineno">1754</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
+<a name="L1755"></a><tt class="py-lineno">1755</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
+<a name="L1756"></a><tt class="py-lineno">1756</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
+<a name="L1757"></a><tt class="py-lineno">1757</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
+<a name="L1758"></a><tt class="py-lineno">1758</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
+<a name="L1759"></a><tt class="py-lineno">1759</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
+<a name="L1760"></a><tt class="py-lineno">1760</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1761"></a><tt class="py-lineno">1761</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1762"></a><tt class="py-lineno">1762</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
+<a name="L1763"></a><tt class="py-lineno">1763</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
+<a name="L1764"></a><tt class="py-lineno">1764</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
+<a name="L1765"></a><tt class="py-lineno">1765</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
+<a name="L1766"></a><tt class="py-lineno">1766</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
+<a name="L1767"></a><tt class="py-lineno">1767</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
+<a name="L1768"></a><tt class="py-lineno">1768</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1769"></a><tt class="py-lineno">1769</tt>  <tt class="py-line">        <tt id="link-1667" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1667', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1668" class="py-name" targets="Function lxml.objectify.deannotate()=lxml.objectify-module.html#deannotate"><a title="lxml.objectify.deannotate" class="py-name" href="#" onclick="return doclink('link-1668', 'deannotate', 'link-1668');">deannotate</a></tt><tt class="py-op">(</tt><tt id="link-1669" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1669', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1770"></a><tt class="py-lineno">1770</tt>  <tt class="py-line"> </tt>
+<a name="L1771"></a><tt class="py-lineno">1771</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1670" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1670', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1671" class="py-name" targets="Method lxml.etree._Element.getiterator()=lxml.etree._Element-class.html#getiterator,Method lxml.etree._ElementTree.getiterator()=lxml.etree._ElementTree-class.html#getiterator"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1671', 'getiterator', 'link-1671');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1772"></a><tt class="py-lineno">1772</tt>  <tt class="py-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 class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1672" 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-1637', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1638" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1638', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-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 class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1639" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1672', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1673" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1673', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1773"></a><tt class="py-lineno">1773</tt>  <tt class="py-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 class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1674" 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-1639', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1640" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1640', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1641" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1641', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></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>
-<a name="L1731"></a><tt class="py-lineno">1731</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1642" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1642', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1643" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1674', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1675" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1675', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1676" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1676', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1774"></a><tt class="py-lineno">1774</tt>  <tt class="py-line"> </tt>
+<a name="L1775"></a><tt class="py-lineno">1775</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1677" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1677', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1678" 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-1643', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1644" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1644', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1732"></a><tt class="py-lineno">1732</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_xsinil_deannotate"></a><div id="ObjectifyTestCase.test_xsinil_deannotate-def"><a name="L1733"></a><tt class="py-lineno">1733</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_xsinil_deannotate-toggle" onclick="return toggle('ObjectifyTestCase.test_xsinil_deannotate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsinil_deannotate">test_xsinil_deannotate</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="ObjectifyTestCase.test_xsinil_deannotate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_xsinil_deannotate-expanded"><a name="L1734"></a><tt class="py-lineno">1734</tt>  <tt class="py-line">        <tt id="link-1645" 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-1645', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1646" 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-1646', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1735"></a><tt class="py-lineno">1735</tt>  <tt class="py-line">        <tt id="link-1647" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1647', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1648" 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-1648', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1649" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1649', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1736"></a><tt class="py-lineno">1736</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
-<a name="L1737"></a><tt class="py-lineno">1737</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
-<a name="L1738"></a><tt class="py-lineno">1738</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1739"></a><tt class="py-lineno">1739</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
-<a name="L1740"></a><tt class="py-lineno">1740</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
-<a name="L1741"></a><tt class="py-lineno">1741</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
-<a name="L1742"></a><tt class="py-lineno">1742</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
-<a name="L1743"></a><tt class="py-lineno">1743</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
-<a name="L1744"></a><tt class="py-lineno">1744</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
-<a name="L1745"></a><tt class="py-lineno">1745</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1746"></a><tt class="py-lineno">1746</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1747"></a><tt class="py-lineno">1747</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
-<a name="L1748"></a><tt class="py-lineno">1748</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
-<a name="L1749"></a><tt class="py-lineno">1749</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
-<a name="L1750"></a><tt class="py-lineno">1750</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
-<a name="L1751"></a><tt class="py-lineno">1751</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
-<a name="L1752"></a><tt class="py-lineno">1752</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
-<a name="L1753"></a><tt class="py-lineno">1753</tt>  <tt class="py-line"><tt class="py-string">        '''</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 id="link-1650" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1650', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1651" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1651', 'annotate', 'link-1472');">annotate</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1755"></a><tt class="py-lineno">1755</tt>  <tt class="py-line">            <tt id="link-1652" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1652', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">ignore_old</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">ignore_xsi</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">annotate_xsi</tt><tt class="py-op">=</tt><tt class="py-name">True</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">empty_pytype</tt><tt class="py-op">=</tt><tt class="py-string">'str'</tt><tt class="py-op">,</tt> <tt class="py-name">empty_type</tt><tt class="py-op">=</tt><tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1757"></a><tt class="py-lineno">1757</tt>  <tt class="py-line">        <tt id="link-1653" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1653', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1654" class="py-name"><a title="lxml.objectify.deannotate" class="py-name" href="#" onclick="return doclink('link-1654', 'deannotate', 'link-1633');">deannotate</a></tt><tt class="py-op">(</tt><tt id="link-1655" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1655', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">pytype</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">xsi</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">xsi_nil</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
-<a name="L1758"></a><tt class="py-lineno">1758</tt>  <tt class="py-line"> </tt>
-<a name="L1759"></a><tt class="py-lineno">1759</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1656" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1678', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1679" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1679', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1776"></a><tt class="py-lineno">1776</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_xsinil_deannotate"></a><div id="ObjectifyTestCase.test_xsinil_deannotate-def"><a name="L1777"></a><tt class="py-lineno">1777</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_xsinil_deannotate-toggle" onclick="return toggle('ObjectifyTestCase.test_xsinil_deannotate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsinil_deannotate">test_xsinil_deannotate</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="ObjectifyTestCase.test_xsinil_deannotate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_xsinil_deannotate-expanded"><a name="L1778"></a><tt class="py-lineno">1778</tt>  <tt class="py-line">        <tt id="link-1680" 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-1680', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1681" 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-1681', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1779"></a><tt class="py-lineno">1779</tt>  <tt class="py-line">        <tt id="link-1682" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1682', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1683" 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-1683', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1684" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1684', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1780"></a><tt class="py-lineno">1780</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
+<a name="L1781"></a><tt class="py-lineno">1781</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</tt> </tt>
+<a name="L1782"></a><tt class="py-lineno">1782</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1783"></a><tt class="py-lineno">1783</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
+<a name="L1784"></a><tt class="py-lineno">1784</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
+<a name="L1785"></a><tt class="py-lineno">1785</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
+<a name="L1786"></a><tt class="py-lineno">1786</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
+<a name="L1787"></a><tt class="py-lineno">1787</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
+<a name="L1788"></a><tt class="py-lineno">1788</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
+<a name="L1789"></a><tt class="py-lineno">1789</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1790"></a><tt class="py-lineno">1790</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="float"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1791"></a><tt class="py-lineno">1791</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="string"&gt;23&lt;/s&gt;</tt> </tt>
+<a name="L1792"></a><tt class="py-lineno">1792</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
+<a name="L1793"></a><tt class="py-lineno">1793</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
+<a name="L1794"></a><tt class="py-lineno">1794</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
+<a name="L1795"></a><tt class="py-lineno">1795</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
+<a name="L1796"></a><tt class="py-lineno">1796</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
+<a name="L1797"></a><tt class="py-lineno">1797</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1798"></a><tt class="py-lineno">1798</tt>  <tt class="py-line">        <tt id="link-1685" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1685', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1686" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1686', 'annotate', 'link-1507');">annotate</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1799"></a><tt class="py-lineno">1799</tt>  <tt class="py-line">            <tt id="link-1687" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1687', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">ignore_old</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">ignore_xsi</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">annotate_xsi</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L1800"></a><tt class="py-lineno">1800</tt>  <tt class="py-line">            <tt class="py-name">empty_pytype</tt><tt class="py-op">=</tt><tt class="py-string">'str'</tt><tt class="py-op">,</tt> <tt class="py-name">empty_type</tt><tt class="py-op">=</tt><tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1801"></a><tt class="py-lineno">1801</tt>  <tt class="py-line">        <tt id="link-1688" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1688', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1689" class="py-name"><a title="lxml.objectify.deannotate" class="py-name" href="#" onclick="return doclink('link-1689', 'deannotate', 'link-1668');">deannotate</a></tt><tt class="py-op">(</tt><tt id="link-1690" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1690', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">pytype</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">xsi</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">xsi_nil</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L1802"></a><tt class="py-lineno">1802</tt>  <tt class="py-line"> </tt>
+<a name="L1803"></a><tt class="py-lineno">1803</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1691" 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-1656', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1657" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1657', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1760"></a><tt class="py-lineno">1760</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1658" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1658', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1659" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1659', 'iterchildren', 'link-1478');">iterchildren</a></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-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"xsd:integer"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</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="L1762"></a><tt class="py-lineno">1762</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1763"></a><tt class="py-lineno">1763</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1764"></a><tt class="py-lineno">1764</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1765"></a><tt class="py-lineno">1765</tt>  <tt class="py-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">"xsd:boolean"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1766"></a><tt class="py-lineno">1766</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1767"></a><tt class="py-lineno">1767</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1768"></a><tt class="py-lineno">1768</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1769"></a><tt class="py-lineno">1769</tt>  <tt class="py-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">"xsd:float"</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1770"></a><tt class="py-lineno">1770</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1771"></a><tt class="py-lineno">1771</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1772"></a><tt class="py-lineno">1772</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1773"></a><tt class="py-lineno">1773</tt>  <tt class="py-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">"xsd:integer"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1774"></a><tt class="py-lineno">1774</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1775"></a><tt class="py-lineno">1775</tt>  <tt class="py-line"> </tt>
-<a name="L1776"></a><tt class="py-lineno">1776</tt>  <tt class="py-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-1660" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1660', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1661" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1691', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1692" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1692', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1804"></a><tt class="py-lineno">1804</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1693" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1693', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1694" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1694', 'iterchildren', 'link-1513');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
+<a name="L1805"></a><tt class="py-lineno">1805</tt>  <tt class="py-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">"xsd:integer"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</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="L1806"></a><tt class="py-lineno">1806</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1807"></a><tt class="py-lineno">1807</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1808"></a><tt class="py-lineno">1808</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1809"></a><tt class="py-lineno">1809</tt>  <tt class="py-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">"xsd:boolean"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1810"></a><tt class="py-lineno">1810</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1811"></a><tt class="py-lineno">1811</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1812"></a><tt class="py-lineno">1812</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1813"></a><tt class="py-lineno">1813</tt>  <tt class="py-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">"xsd:float"</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1814"></a><tt class="py-lineno">1814</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1815"></a><tt class="py-lineno">1815</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1816"></a><tt class="py-lineno">1816</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1817"></a><tt class="py-lineno">1817</tt>  <tt class="py-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">"xsd:integer"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1818"></a><tt class="py-lineno">1818</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1819"></a><tt class="py-lineno">1819</tt>  <tt class="py-line"> </tt>
+<a name="L1820"></a><tt class="py-lineno">1820</tt>  <tt class="py-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-1695" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1695', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1696" 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-1661', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1662" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1662', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1777"></a><tt class="py-lineno">1777</tt>  <tt class="py-line"> </tt>
-<a name="L1778"></a><tt class="py-lineno">1778</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1663" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1663', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1664" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1664', 'iterchildren', 'link-1478');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1779"></a><tt class="py-lineno">1779</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1665" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1696', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1697" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1697', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1821"></a><tt class="py-lineno">1821</tt>  <tt class="py-line"> </tt>
+<a name="L1822"></a><tt class="py-lineno">1822</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1698" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1698', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1699" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1699', 'iterchildren', 'link-1513');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1823"></a><tt class="py-lineno">1823</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1700" 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-1665', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1666" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1666', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1667" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1667', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1780"></a><tt class="py-lineno">1780</tt>  <tt class="py-line">            <tt class="py-comment"># these have no equivalent in xsi:type</tt> </tt>
-<a name="L1781"></a><tt class="py-lineno">1781</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1668" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1700', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1701" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1701', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1702" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1702', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1824"></a><tt class="py-lineno">1824</tt>  <tt class="py-line">            <tt class="py-comment"># these have no equivalent in xsi:type</tt> </tt>
+<a name="L1825"></a><tt class="py-lineno">1825</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1703" 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-1668', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1669" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1669', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1670" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1670', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt id="link-1671" class="py-name"><a title="lxml.tests.test_objectify.TREE_PYTYPE" class="py-name" href="#" onclick="return doclink('link-1671', 'TREE_PYTYPE', 'link-28');">TREE_PYTYPE</a></tt><tt class="py-op">,</tt>  </tt>
-<a name="L1782"></a><tt class="py-lineno">1782</tt>  <tt class="py-line">                <tt class="py-string">"NoneType"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1783"></a><tt class="py-lineno">1783</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1784"></a><tt class="py-lineno">1784</tt>  <tt class="py-line">                    <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1672" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1703', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1704" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1704', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1705" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1705', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt id="link-1706" class="py-name"><a title="lxml.tests.test_objectify.TREE_PYTYPE" class="py-name" href="#" onclick="return doclink('link-1706', 'TREE_PYTYPE', 'link-28');">TREE_PYTYPE</a></tt><tt class="py-op">,</tt>  </tt>
+<a name="L1826"></a><tt class="py-lineno">1826</tt>  <tt class="py-line">                <tt class="py-string">"NoneType"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1827"></a><tt class="py-lineno">1827</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1828"></a><tt class="py-lineno">1828</tt>  <tt class="py-line">                    <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1707" 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-1672', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1673" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1673', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1785"></a><tt class="py-lineno">1785</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_xsitype_deannotate"></a><div id="ObjectifyTestCase.test_xsitype_deannotate-def"><a name="L1786"></a><tt class="py-lineno">1786</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_xsitype_deannotate-toggle" onclick="return toggle('ObjectifyTestCase.test_xsitype_deannotate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsitype_deannotate">test_xsitype_deannotate</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="ObjectifyTestCase.test_xsitype_deannotate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_xsitype_deannotate-expanded"><a name="L1787"></a><tt class="py-lineno">1787</tt>  <tt class="py-line">        <tt id="link-1674" 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-1674', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1675" 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-1675', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1788"></a><tt class="py-lineno">1788</tt>  <tt class="py-line">        <tt id="link-1676" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1676', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1677" 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-1677', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1678" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1678', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1789"></a><tt class="py-lineno">1789</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
-<a name="L1790"></a><tt class="py-lineno">1790</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"</tt> </tt>
-<a name="L1791"></a><tt class="py-lineno">1791</tt>  <tt class="py-line"><tt class="py-string">        xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;</tt> </tt>
-<a name="L1792"></a><tt class="py-lineno">1792</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1793"></a><tt class="py-lineno">1793</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
-<a name="L1794"></a><tt class="py-lineno">1794</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
-<a name="L1795"></a><tt class="py-lineno">1795</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
-<a name="L1796"></a><tt class="py-lineno">1796</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
-<a name="L1797"></a><tt class="py-lineno">1797</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
-<a name="L1798"></a><tt class="py-lineno">1798</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
-<a name="L1799"></a><tt class="py-lineno">1799</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:double"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1800"></a><tt class="py-lineno">1800</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:float"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1801"></a><tt class="py-lineno">1801</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:string"&gt;23&lt;/s&gt;</tt> </tt>
-<a name="L1802"></a><tt class="py-lineno">1802</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
-<a name="L1803"></a><tt class="py-lineno">1803</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
-<a name="L1804"></a><tt class="py-lineno">1804</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
-<a name="L1805"></a><tt class="py-lineno">1805</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
-<a name="L1806"></a><tt class="py-lineno">1806</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
-<a name="L1807"></a><tt class="py-lineno">1807</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1808"></a><tt class="py-lineno">1808</tt>  <tt class="py-line">        <tt id="link-1679" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1679', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1680" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1680', 'annotate', 'link-1472');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1681" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1681', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1809"></a><tt class="py-lineno">1809</tt>  <tt class="py-line">        <tt id="link-1682" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1682', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1683" class="py-name"><a title="lxml.objectify.deannotate" class="py-name" href="#" onclick="return doclink('link-1683', 'deannotate', 'link-1633');">deannotate</a></tt><tt class="py-op">(</tt><tt id="link-1684" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1684', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">pytype</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L1810"></a><tt class="py-lineno">1810</tt>  <tt class="py-line"> </tt>
-<a name="L1811"></a><tt class="py-lineno">1811</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1685" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1707', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1708" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1708', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1829"></a><tt class="py-lineno">1829</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_xsitype_deannotate"></a><div id="ObjectifyTestCase.test_xsitype_deannotate-def"><a name="L1830"></a><tt class="py-lineno">1830</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_xsitype_deannotate-toggle" onclick="return toggle('ObjectifyTestCase.test_xsitype_deannotate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsitype_deannotate">test_xsitype_deannotate</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="ObjectifyTestCase.test_xsitype_deannotate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_xsitype_deannotate-expanded"><a name="L1831"></a><tt class="py-lineno">1831</tt>  <tt class="py-line">        <tt id="link-1709" 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-1709', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1710" 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-1710', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1832"></a><tt class="py-lineno">1832</tt>  <tt class="py-line">        <tt id="link-1711" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1711', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1712" 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-1712', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1713" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1713', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1833"></a><tt class="py-lineno">1833</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
+<a name="L1834"></a><tt class="py-lineno">1834</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"</tt> </tt>
+<a name="L1835"></a><tt class="py-lineno">1835</tt>  <tt class="py-line"><tt class="py-string">        xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;</tt> </tt>
+<a name="L1836"></a><tt class="py-lineno">1836</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1837"></a><tt class="py-lineno">1837</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
+<a name="L1838"></a><tt class="py-lineno">1838</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
+<a name="L1839"></a><tt class="py-lineno">1839</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
+<a name="L1840"></a><tt class="py-lineno">1840</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
+<a name="L1841"></a><tt class="py-lineno">1841</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
+<a name="L1842"></a><tt class="py-lineno">1842</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
+<a name="L1843"></a><tt class="py-lineno">1843</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:double"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1844"></a><tt class="py-lineno">1844</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:float"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1845"></a><tt class="py-lineno">1845</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:string"&gt;23&lt;/s&gt;</tt> </tt>
+<a name="L1846"></a><tt class="py-lineno">1846</tt>  <tt class="py-line"><tt class="py-string">          &lt;s py:pytype="str"&gt;42&lt;/s&gt;</tt> </tt>
+<a name="L1847"></a><tt class="py-lineno">1847</tt>  <tt class="py-line"><tt class="py-string">          &lt;f py:pytype="float"&gt;300&lt;/f&gt;</tt> </tt>
+<a name="L1848"></a><tt class="py-lineno">1848</tt>  <tt class="py-line"><tt class="py-string">          &lt;l py:pytype="long"&gt;2&lt;/l&gt;</tt> </tt>
+<a name="L1849"></a><tt class="py-lineno">1849</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
+<a name="L1850"></a><tt class="py-lineno">1850</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
+<a name="L1851"></a><tt class="py-lineno">1851</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1852"></a><tt class="py-lineno">1852</tt>  <tt class="py-line">        <tt id="link-1714" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1714', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1715" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1715', 'annotate', 'link-1507');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1716" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1716', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1853"></a><tt class="py-lineno">1853</tt>  <tt class="py-line">        <tt id="link-1717" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1717', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1718" class="py-name"><a title="lxml.objectify.deannotate" class="py-name" href="#" onclick="return doclink('link-1718', 'deannotate', 'link-1668');">deannotate</a></tt><tt class="py-op">(</tt><tt id="link-1719" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1719', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">pytype</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L1854"></a><tt class="py-lineno">1854</tt>  <tt class="py-line"> </tt>
+<a name="L1855"></a><tt class="py-lineno">1855</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1720" 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-1685', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1686" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1686', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1687" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1687', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1812"></a><tt class="py-lineno">1812</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1688" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1688', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1689" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1689', 'iterchildren', 'link-1478');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
-<a name="L1813"></a><tt class="py-lineno">1813</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1814"></a><tt class="py-lineno">1814</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1815"></a><tt class="py-lineno">1815</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1816"></a><tt class="py-lineno">1816</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1817"></a><tt class="py-lineno">1817</tt>  <tt class="py-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">"bool"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1818"></a><tt class="py-lineno">1818</tt>  <tt class="py-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">"NoneType"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1819"></a><tt class="py-lineno">1819</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1820"></a><tt class="py-lineno">1820</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1821"></a><tt class="py-lineno">1821</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1822"></a><tt class="py-lineno">1822</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1823"></a><tt class="py-lineno">1823</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1824"></a><tt class="py-lineno">1824</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1825"></a><tt class="py-lineno">1825</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1826"></a><tt class="py-lineno">1826</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1827"></a><tt class="py-lineno">1827</tt>  <tt class="py-line">         </tt>
-<a name="L1828"></a><tt class="py-lineno">1828</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1690" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1690', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1691" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1720', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1721" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1721', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1722" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1722', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1856"></a><tt class="py-lineno">1856</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1723" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1723', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1724" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1724', 'iterchildren', 'link-1513');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
+<a name="L1857"></a><tt class="py-lineno">1857</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1858"></a><tt class="py-lineno">1858</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1859"></a><tt class="py-lineno">1859</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1860"></a><tt class="py-lineno">1860</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1861"></a><tt class="py-lineno">1861</tt>  <tt class="py-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">"bool"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1862"></a><tt class="py-lineno">1862</tt>  <tt class="py-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">"NoneType"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1863"></a><tt class="py-lineno">1863</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1864"></a><tt class="py-lineno">1864</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1865"></a><tt class="py-lineno">1865</tt>  <tt class="py-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">"float"</tt><tt class="py-op">,</tt> <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1866"></a><tt class="py-lineno">1866</tt>  <tt class="py-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">"str"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1867"></a><tt class="py-lineno">1867</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1868"></a><tt class="py-lineno">1868</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1869"></a><tt class="py-lineno">1869</tt>  <tt class="py-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">"int"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1870"></a><tt class="py-lineno">1870</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1871"></a><tt class="py-lineno">1871</tt>  <tt class="py-line">         </tt>
+<a name="L1872"></a><tt class="py-lineno">1872</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1725" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1725', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1726" 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-1691', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1692" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1692', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1829"></a><tt class="py-lineno">1829</tt>  <tt class="py-line"> </tt>
-<a name="L1830"></a><tt class="py-lineno">1830</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1693" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1693', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1694" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1694', 'getiterator', 'link-1636');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1831"></a><tt class="py-lineno">1831</tt>  <tt class="py-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 class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1695" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1726', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1727" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1727', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1873"></a><tt class="py-lineno">1873</tt>  <tt class="py-line"> </tt>
+<a name="L1874"></a><tt class="py-lineno">1874</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1728" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1728', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1729" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1729', 'getiterator', 'link-1671');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1875"></a><tt class="py-lineno">1875</tt>  <tt class="py-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 class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1730" 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-1695', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1696" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1696', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1832"></a><tt class="py-lineno">1832</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_pytype_deannotate"></a><div id="ObjectifyTestCase.test_pytype_deannotate-def"><a name="L1833"></a><tt class="py-lineno">1833</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pytype_deannotate-toggle" onclick="return toggle('ObjectifyTestCase.test_pytype_deannotate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_deannotate">test_pytype_deannotate</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="ObjectifyTestCase.test_pytype_deannotate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pytype_deannotate-expanded"><a name="L1834"></a><tt class="py-lineno">1834</tt>  <tt class="py-line">        <tt id="link-1697" 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-1697', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1698" 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-1698', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1835"></a><tt class="py-lineno">1835</tt>  <tt class="py-line">        <tt id="link-1699" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1699', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1700" 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-1700', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1701" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1701', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1836"></a><tt class="py-lineno">1836</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
-<a name="L1837"></a><tt class="py-lineno">1837</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"</tt> </tt>
-<a name="L1838"></a><tt class="py-lineno">1838</tt>  <tt class="py-line"><tt class="py-string">        xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;</tt> </tt>
-<a name="L1839"></a><tt class="py-lineno">1839</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:int"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1840"></a><tt class="py-lineno">1840</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:string"&gt;test&lt;/b&gt;</tt> </tt>
-<a name="L1841"></a><tt class="py-lineno">1841</tt>  <tt class="py-line"><tt class="py-string">          &lt;c xsi:type="xsd:float"&gt;1.1&lt;/c&gt;</tt> </tt>
-<a name="L1842"></a><tt class="py-lineno">1842</tt>  <tt class="py-line"><tt class="py-string">          &lt;c xsi:type="xsd:string"&gt;\uF8D2&lt;/c&gt;</tt> </tt>
-<a name="L1843"></a><tt class="py-lineno">1843</tt>  <tt class="py-line"><tt class="py-string">          &lt;x xsi:type="xsd:boolean"&gt;true&lt;/x&gt;</tt> </tt>
-<a name="L1844"></a><tt class="py-lineno">1844</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
-<a name="L1845"></a><tt class="py-lineno">1845</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
-<a name="L1846"></a><tt class="py-lineno">1846</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:double"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1847"></a><tt class="py-lineno">1847</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:float"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1848"></a><tt class="py-lineno">1848</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:string"&gt;23&lt;/s&gt;</tt> </tt>
-<a name="L1849"></a><tt class="py-lineno">1849</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:string"&gt;42&lt;/s&gt;</tt> </tt>
-<a name="L1850"></a><tt class="py-lineno">1850</tt>  <tt class="py-line"><tt class="py-string">          &lt;f xsi:type="xsd:float"&gt;300&lt;/f&gt;</tt> </tt>
-<a name="L1851"></a><tt class="py-lineno">1851</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:long"&gt;2&lt;/l&gt;</tt> </tt>
-<a name="L1852"></a><tt class="py-lineno">1852</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
-<a name="L1853"></a><tt class="py-lineno">1853</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
-<a name="L1854"></a><tt class="py-lineno">1854</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1855"></a><tt class="py-lineno">1855</tt>  <tt class="py-line">        <tt id="link-1702" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1702', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1703" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1703', 'annotate', 'link-1472');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1704" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1704', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1856"></a><tt class="py-lineno">1856</tt>  <tt class="py-line">        <tt id="link-1705" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1705', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1706" class="py-name"><a title="lxml.objectify.deannotate" class="py-name" href="#" onclick="return doclink('link-1706', 'deannotate', 'link-1633');">deannotate</a></tt><tt class="py-op">(</tt><tt id="link-1707" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1707', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">xsi</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L1857"></a><tt class="py-lineno">1857</tt>  <tt class="py-line"> </tt>
-<a name="L1858"></a><tt class="py-lineno">1858</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1708" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1730', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1731" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1731', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1876"></a><tt class="py-lineno">1876</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_pytype_deannotate"></a><div id="ObjectifyTestCase.test_pytype_deannotate-def"><a name="L1877"></a><tt class="py-lineno">1877</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pytype_deannotate-toggle" onclick="return toggle('ObjectifyTestCase.test_pytype_deannotate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_deannotate">test_pytype_deannotate</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="ObjectifyTestCase.test_pytype_deannotate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pytype_deannotate-expanded"><a name="L1878"></a><tt class="py-lineno">1878</tt>  <tt class="py-line">        <tt id="link-1732" 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-1732', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1733" 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-1733', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1879"></a><tt class="py-lineno">1879</tt>  <tt class="py-line">        <tt id="link-1734" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1734', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1735" 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-1735', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1736" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1736', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1880"></a><tt class="py-lineno">1880</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</tt> </tt>
+<a name="L1881"></a><tt class="py-lineno">1881</tt>  <tt class="py-line"><tt class="py-string">        xmlns:py="http://codespeak.net/lxml/objectify/pytype"</tt> </tt>
+<a name="L1882"></a><tt class="py-lineno">1882</tt>  <tt class="py-line"><tt class="py-string">        xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;</tt> </tt>
+<a name="L1883"></a><tt class="py-lineno">1883</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:int"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1884"></a><tt class="py-lineno">1884</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:string"&gt;test&lt;/b&gt;</tt> </tt>
+<a name="L1885"></a><tt class="py-lineno">1885</tt>  <tt class="py-line"><tt class="py-string">          &lt;c xsi:type="xsd:float"&gt;1.1&lt;/c&gt;</tt> </tt>
+<a name="L1886"></a><tt class="py-lineno">1886</tt>  <tt class="py-line"><tt class="py-string">          &lt;c xsi:type="xsd:string"&gt;\uF8D2&lt;/c&gt;</tt> </tt>
+<a name="L1887"></a><tt class="py-lineno">1887</tt>  <tt class="py-line"><tt class="py-string">          &lt;x xsi:type="xsd:boolean"&gt;true&lt;/x&gt;</tt> </tt>
+<a name="L1888"></a><tt class="py-lineno">1888</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
+<a name="L1889"></a><tt class="py-lineno">1889</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
+<a name="L1890"></a><tt class="py-lineno">1890</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:double"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1891"></a><tt class="py-lineno">1891</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="xsd:float"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1892"></a><tt class="py-lineno">1892</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:string"&gt;23&lt;/s&gt;</tt> </tt>
+<a name="L1893"></a><tt class="py-lineno">1893</tt>  <tt class="py-line"><tt class="py-string">          &lt;s xsi:type="xsd:string"&gt;42&lt;/s&gt;</tt> </tt>
+<a name="L1894"></a><tt class="py-lineno">1894</tt>  <tt class="py-line"><tt class="py-string">          &lt;f xsi:type="xsd:float"&gt;300&lt;/f&gt;</tt> </tt>
+<a name="L1895"></a><tt class="py-lineno">1895</tt>  <tt class="py-line"><tt class="py-string">          &lt;l xsi:type="xsd:long"&gt;2&lt;/l&gt;</tt> </tt>
+<a name="L1896"></a><tt class="py-lineno">1896</tt>  <tt class="py-line"><tt class="py-string">          &lt;t py:pytype="TREE"&gt;&lt;/t&gt;</tt> </tt>
+<a name="L1897"></a><tt class="py-lineno">1897</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
+<a name="L1898"></a><tt class="py-lineno">1898</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1899"></a><tt class="py-lineno">1899</tt>  <tt class="py-line">        <tt id="link-1737" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1737', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1738" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1738', 'annotate', 'link-1507');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1739" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1739', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1900"></a><tt class="py-lineno">1900</tt>  <tt class="py-line">        <tt id="link-1740" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1740', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1741" class="py-name"><a title="lxml.objectify.deannotate" class="py-name" href="#" onclick="return doclink('link-1741', 'deannotate', 'link-1668');">deannotate</a></tt><tt class="py-op">(</tt><tt id="link-1742" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1742', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">xsi</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L1901"></a><tt class="py-lineno">1901</tt>  <tt class="py-line"> </tt>
+<a name="L1902"></a><tt class="py-lineno">1902</tt>  <tt class="py-line">        <tt class="py-name">child_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1743" 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-1708', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1709" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1709', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1859"></a><tt class="py-lineno">1859</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1710" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1710', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1711" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1711', 'iterchildren', 'link-1478');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
-<a name="L1860"></a><tt class="py-lineno">1860</tt>  <tt class="py-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">"xsd:int"</tt><tt class="py-op">,</tt>      <tt class="py-name">child_types</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="L1861"></a><tt class="py-lineno">1861</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1862"></a><tt class="py-lineno">1862</tt>  <tt class="py-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">"xsd:float"</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1863"></a><tt class="py-lineno">1863</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1864"></a><tt class="py-lineno">1864</tt>  <tt class="py-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">"xsd:boolean"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1865"></a><tt class="py-lineno">1865</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1866"></a><tt class="py-lineno">1866</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1867"></a><tt class="py-lineno">1867</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1868"></a><tt class="py-lineno">1868</tt>  <tt class="py-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">"xsd:float"</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1869"></a><tt class="py-lineno">1869</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1870"></a><tt class="py-lineno">1870</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1871"></a><tt class="py-lineno">1871</tt>  <tt class="py-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">"xsd:float"</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1872"></a><tt class="py-lineno">1872</tt>  <tt class="py-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">"xsd:long"</tt><tt class="py-op">,</tt>     <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1873"></a><tt class="py-lineno">1873</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1874"></a><tt class="py-lineno">1874</tt>  <tt class="py-line"> </tt>
-<a name="L1875"></a><tt class="py-lineno">1875</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1712" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1712', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1713" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1743', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1744" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR" class="py-name" href="#" onclick="return doclink('link-1744', 'XML_SCHEMA_INSTANCE_TYPE_ATTR', 'link-24');">XML_SCHEMA_INSTANCE_TYPE_ATTR</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1903"></a><tt class="py-lineno">1903</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1745" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1745', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1746" class="py-name"><a title="lxml.etree._Element.iterchildren" class="py-name" href="#" onclick="return doclink('link-1746', 'iterchildren', 'link-1513');">iterchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
+<a name="L1904"></a><tt class="py-lineno">1904</tt>  <tt class="py-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">"xsd:int"</tt><tt class="py-op">,</tt>      <tt class="py-name">child_types</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="L1905"></a><tt class="py-lineno">1905</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</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="L1906"></a><tt class="py-lineno">1906</tt>  <tt class="py-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">"xsd:float"</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1907"></a><tt class="py-lineno">1907</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1908"></a><tt class="py-lineno">1908</tt>  <tt class="py-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">"xsd:boolean"</tt><tt class="py-op">,</tt>  <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1909"></a><tt class="py-lineno">1909</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">5</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1910"></a><tt class="py-lineno">1910</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1911"></a><tt class="py-lineno">1911</tt>  <tt class="py-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">"xsd:double"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">7</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1912"></a><tt class="py-lineno">1912</tt>  <tt class="py-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">"xsd:float"</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1913"></a><tt class="py-lineno">1913</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt> <tt class="py-number">9</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1914"></a><tt class="py-lineno">1914</tt>  <tt class="py-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">"xsd:string"</tt><tt class="py-op">,</tt>   <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1915"></a><tt class="py-lineno">1915</tt>  <tt class="py-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">"xsd:float"</tt><tt class="py-op">,</tt>    <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1916"></a><tt class="py-lineno">1916</tt>  <tt class="py-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">"xsd:long"</tt><tt class="py-op">,</tt>     <tt class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1917"></a><tt class="py-lineno">1917</tt>  <tt class="py-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 class="py-name">child_types</tt><tt class="py-op">[</tt><tt class="py-number">13</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1918"></a><tt class="py-lineno">1918</tt>  <tt class="py-line"> </tt>
+<a name="L1919"></a><tt class="py-lineno">1919</tt>  <tt class="py-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">"true"</tt><tt class="py-op">,</tt> <tt id="link-1747" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1747', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt id="link-1748" 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-1713', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1714" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1714', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1876"></a><tt class="py-lineno">1876</tt>  <tt class="py-line"> </tt>
-<a name="L1877"></a><tt class="py-lineno">1877</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1715" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1715', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1716" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1716', 'getiterator', 'link-1636');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1878"></a><tt class="py-lineno">1878</tt>  <tt class="py-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 class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1717" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1748', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1749" class="py-name"><a title="lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR" class="py-name" href="#" onclick="return doclink('link-1749', 'XML_SCHEMA_NIL_ATTR', 'link-26');">XML_SCHEMA_NIL_ATTR</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1920"></a><tt class="py-lineno">1920</tt>  <tt class="py-line"> </tt>
+<a name="L1921"></a><tt class="py-lineno">1921</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-1750" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1750', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1751" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1751', 'getiterator', 'link-1671');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1922"></a><tt class="py-lineno">1922</tt>  <tt class="py-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 class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1752" 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-1717', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1718" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1718', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1719" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1719', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1879"></a><tt class="py-lineno">1879</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_change_pytype_attribute"></a><div id="ObjectifyTestCase.test_change_pytype_attribute-def"><a name="L1880"></a><tt class="py-lineno">1880</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_change_pytype_attribute-toggle" onclick="return toggle('ObjectifyTestCase.test_change_pytype_attribute');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_change_pytype_attribute">test_change_pytype_attribute</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="ObjectifyTestCase.test_change_pytype_attribute-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_change_pytype_attribute-expanded"><a name="L1881"></a><tt class="py-lineno">1881</tt>  <tt class="py-line">        <tt id="link-1720" 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-1720', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1721" 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-1721', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L1882"></a><tt class="py-lineno">1882</tt>  <tt class="py-line"> </tt>
-<a name="L1883"></a><tt class="py-lineno">1883</tt>  <tt class="py-line">        <tt id="link-1722" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-1722', 'xml', 'link-64');">xml</a></tt> <tt class="py-op">=</tt> <tt id="link-1723" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1723', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1884"></a><tt class="py-lineno">1884</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;</tt> </tt>
-<a name="L1885"></a><tt class="py-lineno">1885</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1886"></a><tt class="py-lineno">1886</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
-<a name="L1887"></a><tt class="py-lineno">1887</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
-<a name="L1888"></a><tt class="py-lineno">1888</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
-<a name="L1889"></a><tt class="py-lineno">1889</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
-<a name="L1890"></a><tt class="py-lineno">1890</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
-<a name="L1891"></a><tt class="py-lineno">1891</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
-<a name="L1892"></a><tt class="py-lineno">1892</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
-<a name="L1893"></a><tt class="py-lineno">1893</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
-<a name="L1894"></a><tt class="py-lineno">1894</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1895"></a><tt class="py-lineno">1895</tt>  <tt class="py-line"> </tt>
-<a name="L1896"></a><tt class="py-lineno">1896</tt>  <tt class="py-line">        <tt class="py-name">pytype_ns</tt><tt class="py-op">,</tt> <tt class="py-name">pytype_name</tt> <tt class="py-op">=</tt> <tt id="link-1724" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1724', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1725" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1725', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</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-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'}'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1897"></a><tt class="py-lineno">1897</tt>  <tt class="py-line">        <tt id="link-1726" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1726', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1727" class="py-name"><a title="lxml.objectify.set_pytype_attribute_tag" class="py-name" href="#" onclick="return doclink('link-1727', 'set_pytype_attribute_tag', 'link-94');">set_pytype_attribute_tag</a></tt><tt class="py-op">(</tt><tt class="py-string">"{TEST}test"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1898"></a><tt class="py-lineno">1898</tt>  <tt class="py-line"> </tt>
-<a name="L1899"></a><tt class="py-lineno">1899</tt>  <tt class="py-line">        <tt id="link-1728" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1728', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1729" 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-1729', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1730" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-1730', 'xml', 'link-64');">xml</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1900"></a><tt class="py-lineno">1900</tt>  <tt class="py-line">        <tt id="link-1731" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1731', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1732" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1732', 'annotate', 'link-1472');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1733" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1733', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1901"></a><tt class="py-lineno">1901</tt>  <tt class="py-line"> </tt>
-<a name="L1902"></a><tt class="py-lineno">1902</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt id="link-1734" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1734', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1735" class="py-name" targets="Method lxml.etree._Element.xpath()=lxml.etree._Element-class.html#xpath,Method lxml.etree._ElementTree.xpath()=lxml.etree._ElementTree-class.html#xpath,Function lxml.tests.test_xpathevaluator.xpath()=lxml.tests.test_xpathevaluator-module.html#xpath"><a title="lxml.etree._Element.xpath
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1752', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt id="link-1753" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1753', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1754" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1754', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1923"></a><tt class="py-lineno">1923</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_change_pytype_attribute"></a><div id="ObjectifyTestCase.test_change_pytype_attribute-def"><a name="L1924"></a><tt class="py-lineno">1924</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_change_pytype_attribute-toggle" onclick="return toggle('ObjectifyTestCase.test_change_pytype_attribute');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_change_pytype_attribute">test_change_pytype_attribute</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="ObjectifyTestCase.test_change_pytype_attribute-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_change_pytype_attribute-expanded"><a name="L1925"></a><tt class="py-lineno">1925</tt>  <tt class="py-line">        <tt id="link-1755" 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-1755', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1756" 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-1756', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L1926"></a><tt class="py-lineno">1926</tt>  <tt class="py-line"> </tt>
+<a name="L1927"></a><tt class="py-lineno">1927</tt>  <tt class="py-line">        <tt id="link-1757" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-1757', 'xml', 'link-64');">xml</a></tt> <tt class="py-op">=</tt> <tt id="link-1758" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1758', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1928"></a><tt class="py-lineno">1928</tt>  <tt class="py-line"><tt class="py-string">        &lt;a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;</tt> </tt>
+<a name="L1929"></a><tt class="py-lineno">1929</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1930"></a><tt class="py-lineno">1930</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;test&lt;/b&gt;</tt> </tt>
+<a name="L1931"></a><tt class="py-lineno">1931</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;1.1&lt;/c&gt;</tt> </tt>
+<a name="L1932"></a><tt class="py-lineno">1932</tt>  <tt class="py-line"><tt class="py-string">          &lt;c&gt;\uF8D2&lt;/c&gt;</tt> </tt>
+<a name="L1933"></a><tt class="py-lineno">1933</tt>  <tt class="py-line"><tt class="py-string">          &lt;x&gt;true&lt;/x&gt;</tt> </tt>
+<a name="L1934"></a><tt class="py-lineno">1934</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
+<a name="L1935"></a><tt class="py-lineno">1935</tt>  <tt class="py-line"><tt class="py-string">          &lt;n&gt;&lt;/n&gt;</tt> </tt>
+<a name="L1936"></a><tt class="py-lineno">1936</tt>  <tt class="py-line"><tt class="py-string">          &lt;b xsi:type="double"&gt;5&lt;/b&gt;</tt> </tt>
+<a name="L1937"></a><tt class="py-lineno">1937</tt>  <tt class="py-line"><tt class="py-string">        &lt;/a&gt;</tt> </tt>
+<a name="L1938"></a><tt class="py-lineno">1938</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1939"></a><tt class="py-lineno">1939</tt>  <tt class="py-line"> </tt>
+<a name="L1940"></a><tt class="py-lineno">1940</tt>  <tt class="py-line">        <tt class="py-name">pytype_ns</tt><tt class="py-op">,</tt> <tt class="py-name">pytype_name</tt> <tt class="py-op">=</tt> <tt id="link-1759" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1759', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1760" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1760', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</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-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1941"></a><tt class="py-lineno">1941</tt>  <tt class="py-line">        <tt id="link-1761" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1761', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1762" class="py-name"><a title="lxml.objectify.set_pytype_attribute_tag" class="py-name" href="#" onclick="return doclink('link-1762', 'set_pytype_attribute_tag', 'link-94');">set_pytype_attribute_tag</a></tt><tt class="py-op">(</tt><tt class="py-string">"{TEST}test"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1942"></a><tt class="py-lineno">1942</tt>  <tt class="py-line"> </tt>
+<a name="L1943"></a><tt class="py-lineno">1943</tt>  <tt class="py-line">        <tt id="link-1763" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1763', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1764" 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-1764', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1765" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-1765', 'xml', 'link-64');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1944"></a><tt class="py-lineno">1944</tt>  <tt class="py-line">        <tt id="link-1766" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1766', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1767" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1767', 'annotate', 'link-1507');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1768" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1768', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1945"></a><tt class="py-lineno">1945</tt>  <tt class="py-line"> </tt>
+<a name="L1946"></a><tt class="py-lineno">1946</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt id="link-1769" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1769', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1770" class="py-name" targets="Method lxml.etree._Element.xpath()=lxml.etree._Element-class.html#xpath,Method lxml.etree._ElementTree.xpath()=lxml.etree._ElementTree-class.html#xpath,Function lxml.tests.test_xpathevaluator.xpath()=lxml.tests.test_xpathevaluator-module.html#xpath"><a title="lxml.etree._Element.xpath
 lxml.etree._ElementTree.xpath
-lxml.tests.test_xpathevaluator.xpath" class="py-name" href="#" onclick="return doclink('link-1735', 'xpath', 'link-1735');">xpath</a></tt><tt class="py-op">(</tt><tt class="py-string">"//@py:%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">pytype_name</tt><tt class="py-op">,</tt> </tt>
-<a name="L1903"></a><tt class="py-lineno">1903</tt>  <tt class="py-line">                             <tt class="py-name">namespaces</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">"py"</tt> <tt class="py-op">:</tt> <tt class="py-name">pytype_ns</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L1904"></a><tt class="py-lineno">1904</tt>  <tt class="py-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-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">attribs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1905"></a><tt class="py-lineno">1905</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt id="link-1736" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1736', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1737" class="py-name"><a title="lxml.etree._Element.xpath
+lxml.tests.test_xpathevaluator.xpath" class="py-name" href="#" onclick="return doclink('link-1770', 'xpath', 'link-1770');">xpath</a></tt><tt class="py-op">(</tt><tt class="py-string">"//@py:%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">pytype_name</tt><tt class="py-op">,</tt> </tt>
+<a name="L1947"></a><tt class="py-lineno">1947</tt>  <tt class="py-line">                             <tt class="py-name">namespaces</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">"py"</tt> <tt class="py-op">:</tt> <tt class="py-name">pytype_ns</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1948"></a><tt class="py-lineno">1948</tt>  <tt class="py-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-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">attribs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1949"></a><tt class="py-lineno">1949</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt id="link-1771" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1771', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1772" class="py-name"><a title="lxml.etree._Element.xpath
 lxml.etree._ElementTree.xpath
-lxml.tests.test_xpathevaluator.xpath" class="py-name" href="#" onclick="return doclink('link-1737', 'xpath', 'link-1735');">xpath</a></tt><tt class="py-op">(</tt><tt class="py-string">"//@py:test"</tt><tt class="py-op">,</tt> </tt>
-<a name="L1906"></a><tt class="py-lineno">1906</tt>  <tt class="py-line">                             <tt class="py-name">namespaces</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">"py"</tt> <tt class="py-op">:</tt> <tt class="py-string">"TEST"</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L1907"></a><tt class="py-lineno">1907</tt>  <tt class="py-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-number">7</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">attribs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1908"></a><tt class="py-lineno">1908</tt>  <tt class="py-line"> </tt>
-<a name="L1909"></a><tt class="py-lineno">1909</tt>  <tt class="py-line">        <tt id="link-1738" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1738', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1739" class="py-name"><a title="lxml.objectify.set_pytype_attribute_tag" class="py-name" href="#" onclick="return doclink('link-1739', 'set_pytype_attribute_tag', 'link-94');">set_pytype_attribute_tag</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1910"></a><tt class="py-lineno">1910</tt>  <tt class="py-line">        <tt class="py-name">pytype_ns</tt><tt class="py-op">,</tt> <tt class="py-name">pytype_name</tt> <tt class="py-op">=</tt> <tt id="link-1740" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1740', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1741" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1741', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</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-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'}'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1911"></a><tt class="py-lineno">1911</tt>  <tt class="py-line"> </tt>
-<a name="L1912"></a><tt class="py-lineno">1912</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-string">"test"</tt><tt class="py-op">,</tt> <tt class="py-name">pytype_ns</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1913"></a><tt class="py-lineno">1913</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-string">"test"</tt><tt class="py-op">,</tt> <tt class="py-name">pytype_name</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1914"></a><tt class="py-lineno">1914</tt>  <tt class="py-line"> </tt>
-<a name="L1915"></a><tt class="py-lineno">1915</tt>  <tt class="py-line">        <tt id="link-1742" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1742', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1743" 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-1743', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1744" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-1744', 'xml', 'link-64');">xml</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1916"></a><tt class="py-lineno">1916</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt id="link-1745" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1745', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1746" class="py-name"><a title="lxml.etree._Element.xpath
+lxml.tests.test_xpathevaluator.xpath" class="py-name" href="#" onclick="return doclink('link-1772', 'xpath', 'link-1770');">xpath</a></tt><tt class="py-op">(</tt><tt class="py-string">"//@py:test"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1950"></a><tt class="py-lineno">1950</tt>  <tt class="py-line">                             <tt class="py-name">namespaces</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">"py"</tt> <tt class="py-op">:</tt> <tt class="py-string">"TEST"</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1951"></a><tt class="py-lineno">1951</tt>  <tt class="py-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-number">7</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">attribs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1952"></a><tt class="py-lineno">1952</tt>  <tt class="py-line"> </tt>
+<a name="L1953"></a><tt class="py-lineno">1953</tt>  <tt class="py-line">        <tt id="link-1773" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1773', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1774" class="py-name"><a title="lxml.objectify.set_pytype_attribute_tag" class="py-name" href="#" onclick="return doclink('link-1774', 'set_pytype_attribute_tag', 'link-94');">set_pytype_attribute_tag</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1954"></a><tt class="py-lineno">1954</tt>  <tt class="py-line">        <tt class="py-name">pytype_ns</tt><tt class="py-op">,</tt> <tt class="py-name">pytype_name</tt> <tt class="py-op">=</tt> <tt id="link-1775" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1775', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1776" class="py-name"><a title="lxml.objectify.PYTYPE_ATTRIBUTE" class="py-name" href="#" onclick="return doclink('link-1776', 'PYTYPE_ATTRIBUTE', 'link-377');">PYTYPE_ATTRIBUTE</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-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1955"></a><tt class="py-lineno">1955</tt>  <tt class="py-line"> </tt>
+<a name="L1956"></a><tt class="py-lineno">1956</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-string">"test"</tt><tt class="py-op">,</tt> <tt class="py-name">pytype_ns</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1957"></a><tt class="py-lineno">1957</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-string">"test"</tt><tt class="py-op">,</tt> <tt class="py-name">pytype_name</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1958"></a><tt class="py-lineno">1958</tt>  <tt class="py-line"> </tt>
+<a name="L1959"></a><tt class="py-lineno">1959</tt>  <tt class="py-line">        <tt id="link-1777" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1777', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1778" 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-1778', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1779" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-1779', 'xml', 'link-64');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1960"></a><tt class="py-lineno">1960</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt id="link-1780" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1780', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1781" class="py-name"><a title="lxml.etree._Element.xpath
 lxml.etree._ElementTree.xpath
-lxml.tests.test_xpathevaluator.xpath" class="py-name" href="#" onclick="return doclink('link-1746', 'xpath', 'link-1735');">xpath</a></tt><tt class="py-op">(</tt><tt class="py-string">"//@py:%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">pytype_name</tt><tt class="py-op">,</tt> </tt>
-<a name="L1917"></a><tt class="py-lineno">1917</tt>  <tt class="py-line">                             <tt class="py-name">namespaces</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">"py"</tt> <tt class="py-op">:</tt> <tt class="py-name">pytype_ns</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L1918"></a><tt class="py-lineno">1918</tt>  <tt class="py-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-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">attribs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1919"></a><tt class="py-lineno">1919</tt>  <tt class="py-line"> </tt>
-<a name="L1920"></a><tt class="py-lineno">1920</tt>  <tt class="py-line">        <tt id="link-1747" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1747', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1748" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1748', 'annotate', 'link-1472');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1749" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1749', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1921"></a><tt class="py-lineno">1921</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt id="link-1750" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1750', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1751" class="py-name"><a title="lxml.etree._Element.xpath
+lxml.tests.test_xpathevaluator.xpath" class="py-name" href="#" onclick="return doclink('link-1781', 'xpath', 'link-1770');">xpath</a></tt><tt class="py-op">(</tt><tt class="py-string">"//@py:%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">pytype_name</tt><tt class="py-op">,</tt> </tt>
+<a name="L1961"></a><tt class="py-lineno">1961</tt>  <tt class="py-line">                             <tt class="py-name">namespaces</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">"py"</tt> <tt class="py-op">:</tt> <tt class="py-name">pytype_ns</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1962"></a><tt class="py-lineno">1962</tt>  <tt class="py-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-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">attribs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1963"></a><tt class="py-lineno">1963</tt>  <tt class="py-line"> </tt>
+<a name="L1964"></a><tt class="py-lineno">1964</tt>  <tt class="py-line">        <tt id="link-1782" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1782', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1783" class="py-name"><a title="lxml.objectify.annotate" class="py-name" href="#" onclick="return doclink('link-1783', 'annotate', 'link-1507');">annotate</a></tt><tt class="py-op">(</tt><tt id="link-1784" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1784', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1965"></a><tt class="py-lineno">1965</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt id="link-1785" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1785', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-1786" class="py-name"><a title="lxml.etree._Element.xpath
 lxml.etree._ElementTree.xpath
-lxml.tests.test_xpathevaluator.xpath" class="py-name" href="#" onclick="return doclink('link-1751', 'xpath', 'link-1735');">xpath</a></tt><tt class="py-op">(</tt><tt class="py-string">"//@py:%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">pytype_name</tt><tt class="py-op">,</tt> </tt>
-<a name="L1922"></a><tt class="py-lineno">1922</tt>  <tt class="py-line">                             <tt class="py-name">namespaces</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">"py"</tt> <tt class="py-op">:</tt> <tt class="py-name">pytype_ns</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L1923"></a><tt class="py-lineno">1923</tt>  <tt class="py-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-number">7</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">attribs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1924"></a><tt class="py-lineno">1924</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_registered_types"></a><div id="ObjectifyTestCase.test_registered_types-def"><a name="L1925"></a><tt class="py-lineno">1925</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_registered_types-toggle" onclick="return toggle('ObjectifyTestCase.test_registered_types');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_registered_types">test_registered_types</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="ObjectifyTestCase.test_registered_types-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_registered_types-expanded"><a name="L1926"></a><tt class="py-lineno">1926</tt>  <tt class="py-line">        <tt class="py-name">orig_types</tt> <tt class="py-op">=</tt> <tt id="link-1752" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1752', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1753" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1753', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1927"></a><tt class="py-lineno">1927</tt>  <tt class="py-line">        <tt class="py-name">orig_types</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-1754" class="py-name"><a title="lxml.objectify.PyType.unregister" class="py-name" href="#" onclick="return doclink('link-1754', 'unregister', 'link-99');">unregister</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1928"></a><tt class="py-lineno">1928</tt>  <tt class="py-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">orig_types</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 id="link-1755" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1755', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1756" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1756', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1929"></a><tt class="py-lineno">1929</tt>  <tt class="py-line"> </tt>
-<a name="L1930"></a><tt class="py-lineno">1930</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">NewType</tt><tt class="py-op">(</tt><tt class="py-base-class">objectify</tt><tt class="py-op">.</tt><tt class="py-base-class">ObjectifiedDataElement</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1931"></a><tt class="py-lineno">1931</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L1932"></a><tt class="py-lineno">1932</tt>  <tt class="py-line"> </tt>
-<a name="L1933"></a><tt class="py-lineno">1933</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">checkMyType</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1934"></a><tt class="py-lineno">1934</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
-</div><a name="L1935"></a><tt class="py-lineno">1935</tt>  <tt class="py-line"> </tt>
-<a name="L1936"></a><tt class="py-lineno">1936</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt> <tt class="py-op">=</tt> <tt id="link-1757" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1757', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1758" class="py-name" targets="Class lxml.objectify.PyType=lxml.objectify.PyType-class.html"><a title="lxml.objectify.PyType" class="py-name" href="#" onclick="return doclink('link-1758', 'PyType', 'link-1758');">PyType</a></tt><tt class="py-op">(</tt><tt class="py-string">"mytype"</tt><tt class="py-op">,</tt> <tt class="py-name">checkMyType</tt><tt class="py-op">,</tt> <tt class="py-name">NewType</tt><tt class="py-op">)</tt> </tt>
-<a name="L1937"></a><tt class="py-lineno">1937</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-name">pytype</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-1759" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1759', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1760" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1760', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1938"></a><tt class="py-lineno">1938</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt><tt class="py-op">.</tt><tt id="link-1761" class="py-name"><a title="lxml.objectify.PyType.register" class="py-name" href="#" onclick="return doclink('link-1761', 'register', 'link-100');">register</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1939"></a><tt class="py-lineno">1939</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-name">pytype</tt> <tt class="py-keyword">in</tt> <tt id="link-1762" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1762', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1763" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1763', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1940"></a><tt class="py-lineno">1940</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt><tt class="py-op">.</tt><tt id="link-1764" class="py-name"><a title="lxml.objectify.PyType.unregister" class="py-name" href="#" onclick="return doclink('link-1764', 'unregister', 'link-99');">unregister</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1941"></a><tt class="py-lineno">1941</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-name">pytype</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-1765" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1765', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1766" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1766', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1942"></a><tt class="py-lineno">1942</tt>  <tt class="py-line"> </tt>
-<a name="L1943"></a><tt class="py-lineno">1943</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt><tt class="py-op">.</tt><tt id="link-1767" class="py-name"><a title="lxml.objectify.PyType.register" class="py-name" href="#" onclick="return doclink('link-1767', 'register', 'link-100');">register</a></tt><tt class="py-op">(</tt><tt class="py-name">before</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-1768" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1768', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1769" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1769', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</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 id="link-1770" 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.tests.test_xpathevaluator.xpath" class="py-name" href="#" onclick="return doclink('link-1786', 'xpath', 'link-1770');">xpath</a></tt><tt class="py-op">(</tt><tt class="py-string">"//@py:%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">pytype_name</tt><tt class="py-op">,</tt> </tt>
+<a name="L1966"></a><tt class="py-lineno">1966</tt>  <tt class="py-line">                             <tt class="py-name">namespaces</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">"py"</tt> <tt class="py-op">:</tt> <tt class="py-name">pytype_ns</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1967"></a><tt class="py-lineno">1967</tt>  <tt class="py-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-number">7</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">attribs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1968"></a><tt class="py-lineno">1968</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_registered_types"></a><div id="ObjectifyTestCase.test_registered_types-def"><a name="L1969"></a><tt class="py-lineno">1969</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_registered_types-toggle" onclick="return toggle('ObjectifyTestCase.test_registered_types');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_registered_types">test_registered_types</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="ObjectifyTestCase.test_registered_types-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_registered_types-expanded"><a name="L1970"></a><tt class="py-lineno">1970</tt>  <tt class="py-line">        <tt class="py-name">orig_types</tt> <tt class="py-op">=</tt> <tt id="link-1787" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1787', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1788" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1788', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1971"></a><tt class="py-lineno">1971</tt>  <tt class="py-line">        <tt class="py-name">orig_types</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-1789" class="py-name"><a title="lxml.objectify.PyType.unregister" class="py-name" href="#" onclick="return doclink('link-1789', 'unregister', 'link-99');">unregister</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1972"></a><tt class="py-lineno">1972</tt>  <tt class="py-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">orig_types</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 id="link-1790" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1790', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1791" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1791', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1973"></a><tt class="py-lineno">1973</tt>  <tt class="py-line"> </tt>
+<a name="L1974"></a><tt class="py-lineno">1974</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">NewType</tt><tt class="py-op">(</tt><tt class="py-base-class">objectify</tt><tt class="py-op">.</tt><tt class="py-base-class">ObjectifiedDataElement</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1975"></a><tt class="py-lineno">1975</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L1976"></a><tt class="py-lineno">1976</tt>  <tt class="py-line"> </tt>
+<a name="L1977"></a><tt class="py-lineno">1977</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">checkMyType</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1978"></a><tt class="py-lineno">1978</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L1979"></a><tt class="py-lineno">1979</tt>  <tt class="py-line"> </tt>
+<a name="L1980"></a><tt class="py-lineno">1980</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt> <tt class="py-op">=</tt> <tt id="link-1792" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1792', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1793" class="py-name" targets="Class lxml.objectify.PyType=lxml.objectify.PyType-class.html"><a title="lxml.objectify.PyType" class="py-name" href="#" onclick="return doclink('link-1793', 'PyType', 'link-1793');">PyType</a></tt><tt class="py-op">(</tt><tt class="py-string">"mytype"</tt><tt class="py-op">,</tt> <tt class="py-name">checkMyType</tt><tt class="py-op">,</tt> <tt class="py-name">NewType</tt><tt class="py-op">)</tt> </tt>
+<a name="L1981"></a><tt class="py-lineno">1981</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-name">pytype</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-1794" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1794', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1795" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1795', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1982"></a><tt class="py-lineno">1982</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt><tt class="py-op">.</tt><tt id="link-1796" class="py-name"><a title="lxml.objectify.PyType.register" class="py-name" href="#" onclick="return doclink('link-1796', 'register', 'link-100');">register</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1983"></a><tt class="py-lineno">1983</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-name">pytype</tt> <tt class="py-keyword">in</tt> <tt id="link-1797" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1797', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1798" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1798', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1984"></a><tt class="py-lineno">1984</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt><tt class="py-op">.</tt><tt id="link-1799" class="py-name"><a title="lxml.objectify.PyType.unregister" class="py-name" href="#" onclick="return doclink('link-1799', 'unregister', 'link-99');">unregister</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1985"></a><tt class="py-lineno">1985</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-name">pytype</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-1800" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1800', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1801" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1801', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1986"></a><tt class="py-lineno">1986</tt>  <tt class="py-line"> </tt>
+<a name="L1987"></a><tt class="py-lineno">1987</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt><tt class="py-op">.</tt><tt id="link-1802" class="py-name"><a title="lxml.objectify.PyType.register" class="py-name" href="#" onclick="return doclink('link-1802', 'register', 'link-100');">register</a></tt><tt class="py-op">(</tt><tt class="py-name">before</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-1803" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1803', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1804" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1804', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</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 id="link-1805" 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-1770', 'name', 'link-1770');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1944"></a><tt class="py-lineno">1944</tt>  <tt class="py-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">pytype</tt><tt class="py-op">,</tt> <tt id="link-1771" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1771', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1772" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1772', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</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="L1945"></a><tt class="py-lineno">1945</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt><tt class="py-op">.</tt><tt id="link-1773" class="py-name"><a title="lxml.objectify.PyType.unregister" class="py-name" href="#" onclick="return doclink('link-1773', 'unregister', 'link-99');">unregister</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1946"></a><tt class="py-lineno">1946</tt>  <tt class="py-line"> </tt>
-<a name="L1947"></a><tt class="py-lineno">1947</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt><tt class="py-op">.</tt><tt id="link-1774" class="py-name"><a title="lxml.objectify.PyType.register" class="py-name" href="#" onclick="return doclink('link-1774', 'register', 'link-100');">register</a></tt><tt class="py-op">(</tt><tt class="py-name">after</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-1775" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1775', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1776" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1776', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</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 id="link-1777" class="py-name"><a title="lxml.etree.DTD.name
+lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-1805', 'name', 'link-1805');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1988"></a><tt class="py-lineno">1988</tt>  <tt class="py-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">pytype</tt><tt class="py-op">,</tt> <tt id="link-1806" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1806', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1807" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1807', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</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="L1989"></a><tt class="py-lineno">1989</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt><tt class="py-op">.</tt><tt id="link-1808" class="py-name"><a title="lxml.objectify.PyType.unregister" class="py-name" href="#" onclick="return doclink('link-1808', 'unregister', 'link-99');">unregister</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1990"></a><tt class="py-lineno">1990</tt>  <tt class="py-line"> </tt>
+<a name="L1991"></a><tt class="py-lineno">1991</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt><tt class="py-op">.</tt><tt id="link-1809" class="py-name"><a title="lxml.objectify.PyType.register" class="py-name" href="#" onclick="return doclink('link-1809', 'register', 'link-100');">register</a></tt><tt class="py-op">(</tt><tt class="py-name">after</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-1810" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1810', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1811" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1811', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</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 id="link-1812" 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-1777', 'name', 'link-1770');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1948"></a><tt class="py-lineno">1948</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-name">pytype</tt><tt class="py-op">,</tt> <tt id="link-1778" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1778', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1779" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1779', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</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="L1949"></a><tt class="py-lineno">1949</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt><tt class="py-op">.</tt><tt id="link-1780" class="py-name"><a title="lxml.objectify.PyType.unregister" class="py-name" href="#" onclick="return doclink('link-1780', 'unregister', 'link-99');">unregister</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1950"></a><tt class="py-lineno">1950</tt>  <tt class="py-line"> </tt>
-<a name="L1951"></a><tt class="py-lineno">1951</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 class="py-name">pytype</tt><tt class="py-op">.</tt><tt id="link-1781" class="py-name"><a title="lxml.objectify.PyType.register" class="py-name" href="#" onclick="return doclink('link-1781', 'register', 'link-100');">register</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1952"></a><tt class="py-lineno">1952</tt>  <tt class="py-line">                          <tt class="py-name">before</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-1782" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1782', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1783" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1783', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</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 id="link-1784" class="py-name"><a title="lxml.etree.DTD.name
+lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-1812', 'name', 'link-1805');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1992"></a><tt class="py-lineno">1992</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-name">pytype</tt><tt class="py-op">,</tt> <tt id="link-1813" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1813', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1814" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1814', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</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="L1993"></a><tt class="py-lineno">1993</tt>  <tt class="py-line">        <tt class="py-name">pytype</tt><tt class="py-op">.</tt><tt id="link-1815" class="py-name"><a title="lxml.objectify.PyType.unregister" class="py-name" href="#" onclick="return doclink('link-1815', 'unregister', 'link-99');">unregister</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1994"></a><tt class="py-lineno">1994</tt>  <tt class="py-line"> </tt>
+<a name="L1995"></a><tt class="py-lineno">1995</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 class="py-name">pytype</tt><tt class="py-op">.</tt><tt id="link-1816" class="py-name"><a title="lxml.objectify.PyType.register" class="py-name" href="#" onclick="return doclink('link-1816', 'register', 'link-100');">register</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1996"></a><tt class="py-lineno">1996</tt>  <tt class="py-line">                          <tt class="py-name">before</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-1817" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1817', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1818" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1818', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</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 id="link-1819" 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-1784', 'name', 'link-1770');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1953"></a><tt class="py-lineno">1953</tt>  <tt class="py-line">                          <tt class="py-name">after</tt>  <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-1785" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1785', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1786" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1786', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</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 id="link-1787" class="py-name"><a title="lxml.etree.DTD.name
+lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-1819', 'name', 'link-1805');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1997"></a><tt class="py-lineno">1997</tt>  <tt class="py-line">                          <tt class="py-name">after</tt>  <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-1820" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1820', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1821" class="py-name"><a title="lxml.objectify.getRegisteredTypes" class="py-name" href="#" onclick="return doclink('link-1821', 'getRegisteredTypes', 'link-89');">getRegisteredTypes</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 id="link-1822" 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-1787', 'name', 'link-1770');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1954"></a><tt class="py-lineno">1954</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_registered_type_stringify"></a><div id="ObjectifyTestCase.test_registered_type_stringify-def"><a name="L1955"></a><tt class="py-lineno">1955</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_registered_type_stringify-toggle" onclick="return toggle('ObjectifyTestCase.test_registered_type_stringify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_registered_type_stringify">test_registered_type_stringify</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="ObjectifyTestCase.test_registered_type_stringify-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_registered_type_stringify-expanded"><a name="L1956"></a><tt class="py-lineno">1956</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt class="py-name">datetime</tt> <tt class="py-keyword">import</tt> <tt class="py-name">datetime</tt> </tt>
-<a name="L1957"></a><tt class="py-lineno">1957</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">parse_date</tt><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1958"></a><tt class="py-lineno">1958</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-1788" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-1822', 'name', 'link-1805');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1998"></a><tt class="py-lineno">1998</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_registered_type_stringify"></a><div id="ObjectifyTestCase.test_registered_type_stringify-def"><a name="L1999"></a><tt class="py-lineno">1999</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_registered_type_stringify-toggle" onclick="return toggle('ObjectifyTestCase.test_registered_type_stringify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_registered_type_stringify">test_registered_type_stringify</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="ObjectifyTestCase.test_registered_type_stringify-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_registered_type_stringify-expanded"><a name="L2000"></a><tt class="py-lineno">2000</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt class="py-name">datetime</tt> <tt class="py-keyword">import</tt> <tt class="py-name">datetime</tt> </tt>
+<a name="L2001"></a><tt class="py-lineno">2001</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">parse_date</tt><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2002"></a><tt class="py-lineno">2002</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-1823" 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-1788', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">14</tt><tt class="py-op">:</tt> </tt>
-<a name="L1959"></a><tt class="py-lineno">1959</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-1789" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1823', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">14</tt><tt class="py-op">:</tt> </tt>
+<a name="L2003"></a><tt class="py-lineno">2003</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-1824" 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-1789', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1960"></a><tt class="py-lineno">1960</tt>  <tt class="py-line">            <tt class="py-name">Y</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-1790" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1824', 'value', 'link-196');">value</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2004"></a><tt class="py-lineno">2004</tt>  <tt class="py-line">            <tt class="py-name">Y</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-1825" 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-1790', 'value', 'link-196');">value</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1961"></a><tt class="py-lineno">1961</tt>  <tt class="py-line">            <tt class="py-name">M</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-1791" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1825', 'value', 'link-196');">value</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2005"></a><tt class="py-lineno">2005</tt>  <tt class="py-line">            <tt class="py-name">M</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-1826" 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-1791', 'value', 'link-196');">value</a></tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">:</tt><tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1962"></a><tt class="py-lineno">1962</tt>  <tt class="py-line">            <tt class="py-name">D</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-1792" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1826', 'value', 'link-196');">value</a></tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">:</tt><tt class="py-number">6</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2006"></a><tt class="py-lineno">2006</tt>  <tt class="py-line">            <tt class="py-name">D</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-1827" 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-1792', 'value', 'link-196');">value</a></tt><tt class="py-op">[</tt><tt class="py-number">6</tt><tt class="py-op">:</tt><tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1963"></a><tt class="py-lineno">1963</tt>  <tt class="py-line">            <tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-1793" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1827', 'value', 'link-196');">value</a></tt><tt class="py-op">[</tt><tt class="py-number">6</tt><tt class="py-op">:</tt><tt class="py-number">8</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2007"></a><tt class="py-lineno">2007</tt>  <tt class="py-line">            <tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-1828" 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-1793', 'value', 'link-196');">value</a></tt><tt class="py-op">[</tt><tt class="py-number">8</tt><tt class="py-op">:</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1964"></a><tt class="py-lineno">1964</tt>  <tt class="py-line">            <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-1794" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1828', 'value', 'link-196');">value</a></tt><tt class="py-op">[</tt><tt class="py-number">8</tt><tt class="py-op">:</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2008"></a><tt class="py-lineno">2008</tt>  <tt class="py-line">            <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-1829" 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-1794', 'value', 'link-196');">value</a></tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">:</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1965"></a><tt class="py-lineno">1965</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-1795" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1829', 'value', 'link-196');">value</a></tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">:</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2009"></a><tt class="py-lineno">2009</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-1830" 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-1795', 'value', 'link-196');">value</a></tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">:</tt><tt class="py-number">14</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1966"></a><tt class="py-lineno">1966</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">datetime</tt><tt class="py-op">(</tt><tt class="py-name">Y</tt><tt class="py-op">,</tt> <tt class="py-name">M</tt><tt class="py-op">,</tt> <tt class="py-name">D</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1967"></a><tt class="py-lineno">1967</tt>  <tt class="py-line"> </tt>
-<a name="L1968"></a><tt class="py-lineno">1968</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">stringify_date</tt><tt class="py-op">(</tt><tt class="py-param">date</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1969"></a><tt class="py-lineno">1969</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">date</tt><tt class="py-op">.</tt><tt class="py-name">strftime</tt><tt class="py-op">(</tt><tt class="py-string">"%Y%m%d%H%M%S"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1970"></a><tt class="py-lineno">1970</tt>  <tt class="py-line"> </tt>
-<a name="L1971"></a><tt class="py-lineno">1971</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">DatetimeElement</tt><tt class="py-op">(</tt><tt class="py-base-class">objectify</tt><tt class="py-op">.</tt><tt class="py-base-class">ObjectifiedDataElement</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1972"></a><tt class="py-lineno">1972</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">pyval</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1973"></a><tt class="py-lineno">1973</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">parse_date</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1796" class="py-name"><a title="lxml.etree.QName.text
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1830', 'value', 'link-196');">value</a></tt><tt class="py-op">[</tt><tt class="py-number">12</tt><tt class="py-op">:</tt><tt class="py-number">14</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2010"></a><tt class="py-lineno">2010</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">datetime</tt><tt class="py-op">(</tt><tt class="py-name">Y</tt><tt class="py-op">,</tt> <tt class="py-name">M</tt><tt class="py-op">,</tt> <tt class="py-name">D</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2011"></a><tt class="py-lineno">2011</tt>  <tt class="py-line"> </tt>
+<a name="L2012"></a><tt class="py-lineno">2012</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">stringify_date</tt><tt class="py-op">(</tt><tt class="py-param">date</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2013"></a><tt class="py-lineno">2013</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">date</tt><tt class="py-op">.</tt><tt class="py-name">strftime</tt><tt class="py-op">(</tt><tt class="py-string">"%Y%m%d%H%M%S"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2014"></a><tt class="py-lineno">2014</tt>  <tt class="py-line"> </tt>
+<a name="L2015"></a><tt class="py-lineno">2015</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">DatetimeElement</tt><tt class="py-op">(</tt><tt class="py-base-class">objectify</tt><tt class="py-op">.</tt><tt class="py-base-class">ObjectifiedDataElement</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2016"></a><tt class="py-lineno">2016</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">pyval</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2017"></a><tt class="py-lineno">2017</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">parse_date</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1831" 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-1796', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1974"></a><tt class="py-lineno">1974</tt>  <tt class="py-line">            <tt id="link-1797" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1831', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2018"></a><tt class="py-lineno">2018</tt>  <tt class="py-line">            <tt id="link-1832" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1797', 'pyval', 'link-360');">pyval</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-1798" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1832', 'pyval', 'link-360');">pyval</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-1833" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1798', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1975"></a><tt class="py-lineno">1975</tt>  <tt class="py-line"> </tt>
-<a name="L1976"></a><tt class="py-lineno">1976</tt>  <tt class="py-line">        <tt class="py-name">datetime_type</tt> <tt class="py-op">=</tt> <tt id="link-1799" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1799', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1800" class="py-name"><a title="lxml.objectify.PyType" class="py-name" href="#" onclick="return doclink('link-1800', 'PyType', 'link-1758');">PyType</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1977"></a><tt class="py-lineno">1977</tt>  <tt class="py-line">            <tt class="py-string">"datetime"</tt><tt class="py-op">,</tt> <tt class="py-name">parse_date</tt><tt class="py-op">,</tt> <tt class="py-name">DatetimeElement</tt><tt class="py-op">,</tt> <tt class="py-name">stringify_date</tt><tt class="py-op">)</tt> </tt>
-<a name="L1978"></a><tt class="py-lineno">1978</tt>  <tt class="py-line">        <tt class="py-name">datetime_type</tt><tt class="py-op">.</tt><tt id="link-1801" class="py-name" targets="Variable lxml.objectify.PyType.xmlSchemaTypes=lxml.objectify.PyType-class.html#xmlSchemaTypes"><a title="lxml.objectify.PyType.xmlSchemaTypes" class="py-name" href="#" onclick="return doclink('link-1801', 'xmlSchemaTypes', 'link-1801');">xmlSchemaTypes</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"dateTime"</tt> </tt>
-<a name="L1979"></a><tt class="py-lineno">1979</tt>  <tt class="py-line">        <tt class="py-name">datetime_type</tt><tt class="py-op">.</tt><tt id="link-1802" class="py-name"><a title="lxml.objectify.PyType.register" class="py-name" href="#" onclick="return doclink('link-1802', 'register', 'link-100');">register</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1980"></a><tt class="py-lineno">1980</tt>  <tt class="py-line"> </tt>
-<a name="L1981"></a><tt class="py-lineno">1981</tt>  <tt class="py-line">        <tt id="link-1803" class="py-name" targets="Variable lxml.etree.ErrorDomains.NAMESPACE=lxml.etree.ErrorDomains-class.html#NAMESPACE"><a title="lxml.etree.ErrorDomains.NAMESPACE" class="py-name" href="#" onclick="return doclink('link-1803', 'NAMESPACE', 'link-1803');">NAMESPACE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"http://foo.net/xmlns"</tt> </tt>
-<a name="L1982"></a><tt class="py-lineno">1982</tt>  <tt class="py-line">        <tt class="py-name">NAMESPACE_MAP</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'ns'</tt><tt class="py-op">:</tt> <tt id="link-1804" class="py-name"><a title="lxml.etree.ErrorDomains.NAMESPACE" class="py-name" href="#" onclick="return doclink('link-1804', 'NAMESPACE', 'link-1803');">NAMESPACE</a></tt><tt class="py-op">}</tt> </tt>
-<a name="L1983"></a><tt class="py-lineno">1983</tt>  <tt class="py-line"> </tt>
-<a name="L1984"></a><tt class="py-lineno">1984</tt>  <tt class="py-line">        <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt id="link-1805" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1805', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1806" class="py-name"><a title="lxml.etree.Element
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1833', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2019"></a><tt class="py-lineno">2019</tt>  <tt class="py-line"> </tt>
+<a name="L2020"></a><tt class="py-lineno">2020</tt>  <tt class="py-line">        <tt class="py-name">datetime_type</tt> <tt class="py-op">=</tt> <tt id="link-1834" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1834', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1835" class="py-name"><a title="lxml.objectify.PyType" class="py-name" href="#" onclick="return doclink('link-1835', 'PyType', 'link-1793');">PyType</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L2021"></a><tt class="py-lineno">2021</tt>  <tt class="py-line">            <tt class="py-string">"datetime"</tt><tt class="py-op">,</tt> <tt class="py-name">parse_date</tt><tt class="py-op">,</tt> <tt class="py-name">DatetimeElement</tt><tt class="py-op">,</tt> <tt class="py-name">stringify_date</tt><tt class="py-op">)</tt> </tt>
+<a name="L2022"></a><tt class="py-lineno">2022</tt>  <tt class="py-line">        <tt class="py-name">datetime_type</tt><tt class="py-op">.</tt><tt id="link-1836" class="py-name" targets="Variable lxml.objectify.PyType.xmlSchemaTypes=lxml.objectify.PyType-class.html#xmlSchemaTypes"><a title="lxml.objectify.PyType.xmlSchemaTypes" class="py-name" href="#" onclick="return doclink('link-1836', 'xmlSchemaTypes', 'link-1836');">xmlSchemaTypes</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"dateTime"</tt> </tt>
+<a name="L2023"></a><tt class="py-lineno">2023</tt>  <tt class="py-line">        <tt class="py-name">datetime_type</tt><tt class="py-op">.</tt><tt id="link-1837" class="py-name"><a title="lxml.objectify.PyType.register" class="py-name" href="#" onclick="return doclink('link-1837', 'register', 'link-100');">register</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2024"></a><tt class="py-lineno">2024</tt>  <tt class="py-line"> </tt>
+<a name="L2025"></a><tt class="py-lineno">2025</tt>  <tt class="py-line">        <tt id="link-1838" class="py-name" targets="Variable lxml.etree.ErrorDomains.NAMESPACE=lxml.etree.ErrorDomains-class.html#NAMESPACE"><a title="lxml.etree.ErrorDomains.NAMESPACE" class="py-name" href="#" onclick="return doclink('link-1838', 'NAMESPACE', 'link-1838');">NAMESPACE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"http://foo.net/xmlns"</tt> </tt>
+<a name="L2026"></a><tt class="py-lineno">2026</tt>  <tt class="py-line">        <tt class="py-name">NAMESPACE_MAP</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'ns'</tt><tt class="py-op">:</tt> <tt id="link-1839" class="py-name"><a title="lxml.etree.ErrorDomains.NAMESPACE" class="py-name" href="#" onclick="return doclink('link-1839', 'NAMESPACE', 'link-1838');">NAMESPACE</a></tt><tt class="py-op">}</tt> </tt>
+<a name="L2027"></a><tt class="py-lineno">2027</tt>  <tt class="py-line"> </tt>
+<a name="L2028"></a><tt class="py-lineno">2028</tt>  <tt class="py-line">        <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt id="link-1840" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1840', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1841" 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-1806', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{%s}root"</tt> <tt class="py-op">%</tt> <tt id="link-1807" class="py-name"><a title="lxml.etree.ErrorDomains.NAMESPACE" class="py-name" href="#" onclick="return doclink('link-1807', 'NAMESPACE', 'link-1803');">NAMESPACE</a></tt><tt class="py-op">,</tt> <tt id="link-1808" class="py-name"><a title="lxml.etree._Element.nsmap" class="py-name" href="#" onclick="return doclink('link-1808', 'nsmap', 'link-105');">nsmap</a></tt><tt class="py-op">=</tt><tt class="py-name">NAMESPACE_MAP</tt><tt class="py-op">)</tt> </tt>
-<a name="L1985"></a><tt class="py-lineno">1985</tt>  <tt class="py-line">        <tt class="py-name">time</tt> <tt class="py-op">=</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">now</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1986"></a><tt class="py-lineno">1986</tt>  <tt class="py-line">        <tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt> </tt>
-<a name="L1987"></a><tt class="py-lineno">1987</tt>  <tt class="py-line"> </tt>
-<a name="L1988"></a><tt class="py-lineno">1988</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">,</tt> <tt class="py-name">DatetimeElement</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1989"></a><tt class="py-lineno">1989</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">.</tt><tt id="link-1809" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1841', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{%s}root"</tt> <tt class="py-op">%</tt> <tt id="link-1842" class="py-name"><a title="lxml.etree.ErrorDomains.NAMESPACE" class="py-name" href="#" onclick="return doclink('link-1842', 'NAMESPACE', 'link-1838');">NAMESPACE</a></tt><tt class="py-op">,</tt> <tt id="link-1843" class="py-name"><a title="lxml.etree._Element.nsmap" class="py-name" href="#" onclick="return doclink('link-1843', 'nsmap', 'link-105');">nsmap</a></tt><tt class="py-op">=</tt><tt class="py-name">NAMESPACE_MAP</tt><tt class="py-op">)</tt> </tt>
+<a name="L2029"></a><tt class="py-lineno">2029</tt>  <tt class="py-line">        <tt class="py-name">time</tt> <tt class="py-op">=</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">now</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2030"></a><tt class="py-lineno">2030</tt>  <tt class="py-line">        <tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt> </tt>
+<a name="L2031"></a><tt class="py-lineno">2031</tt>  <tt class="py-line"> </tt>
+<a name="L2032"></a><tt class="py-lineno">2032</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">,</tt> <tt class="py-name">DatetimeElement</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2033"></a><tt class="py-lineno">2033</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">.</tt><tt id="link-1844" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1809', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">datetime</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1990"></a><tt class="py-lineno">1990</tt>  <tt class="py-line"> </tt>
-<a name="L1991"></a><tt class="py-lineno">1991</tt>  <tt class="py-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">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">.</tt><tt id="link-1810" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1844', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">datetime</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2034"></a><tt class="py-lineno">2034</tt>  <tt class="py-line"> </tt>
+<a name="L2035"></a><tt class="py-lineno">2035</tt>  <tt class="py-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">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">.</tt><tt id="link-1845" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1810', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">parse_date</tt><tt class="py-op">(</tt><tt class="py-name">stringify_date</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1992"></a><tt class="py-lineno">1992</tt>  <tt class="py-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">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">.</tt><tt id="link-1811" class="py-name"><a title="lxml.etree.QName.text
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1845', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">parse_date</tt><tt class="py-op">(</tt><tt class="py-name">stringify_date</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2036"></a><tt class="py-lineno">2036</tt>  <tt class="py-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">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">.</tt><tt id="link-1846" 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-1811', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">stringify_date</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1993"></a><tt class="py-lineno">1993</tt>  <tt class="py-line"> </tt>
-<a name="L1994"></a><tt class="py-lineno">1994</tt>  <tt class="py-line">        <tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt> <tt class="py-op">=</tt> <tt id="link-1812" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1812', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1813" class="py-name" targets="Variable lxml.builder.E=lxml.builder-module.html#E,Variable lxml.html.builder.E=lxml.html.builder-module.html#E,Variable lxml.objectify.E=lxml.objectify-module.html#E"><a title="lxml.builder.E
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1846', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">stringify_date</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2037"></a><tt class="py-lineno">2037</tt>  <tt class="py-line"> </tt>
+<a name="L2038"></a><tt class="py-lineno">2038</tt>  <tt class="py-line">        <tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt> <tt class="py-op">=</tt> <tt id="link-1847" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1847', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1848" class="py-name" targets="Variable lxml.builder.E=lxml.builder-module.html#E,Variable lxml.html.builder.E=lxml.html.builder-module.html#E,Variable lxml.objectify.E=lxml.objectify-module.html#E"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-1813', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt> </tt>
-<a name="L1995"></a><tt class="py-lineno">1995</tt>  <tt class="py-line"> </tt>
-<a name="L1996"></a><tt class="py-lineno">1996</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">,</tt> <tt class="py-name">DatetimeElement</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1997"></a><tt class="py-lineno">1997</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">.</tt><tt id="link-1814" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-1848', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt> </tt>
+<a name="L2039"></a><tt class="py-lineno">2039</tt>  <tt class="py-line"> </tt>
+<a name="L2040"></a><tt class="py-lineno">2040</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">,</tt> <tt class="py-name">DatetimeElement</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2041"></a><tt class="py-lineno">2041</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">.</tt><tt id="link-1849" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1814', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">datetime</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1998"></a><tt class="py-lineno">1998</tt>  <tt class="py-line"> </tt>
-<a name="L1999"></a><tt class="py-lineno">1999</tt>  <tt class="py-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">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">.</tt><tt id="link-1815" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1849', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">datetime</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2042"></a><tt class="py-lineno">2042</tt>  <tt class="py-line"> </tt>
+<a name="L2043"></a><tt class="py-lineno">2043</tt>  <tt class="py-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">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">.</tt><tt id="link-1850" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1815', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">parse_date</tt><tt class="py-op">(</tt><tt class="py-name">stringify_date</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2000"></a><tt class="py-lineno">2000</tt>  <tt class="py-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">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">.</tt><tt id="link-1816" class="py-name"><a title="lxml.etree.QName.text
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1850', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">parse_date</tt><tt class="py-op">(</tt><tt class="py-name">stringify_date</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2044"></a><tt class="py-lineno">2044</tt>  <tt class="py-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">r</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">.</tt><tt id="link-1851" 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-1816', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">stringify_date</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2001"></a><tt class="py-lineno">2001</tt>  <tt class="py-line"> </tt>
-<a name="L2002"></a><tt class="py-lineno">2002</tt>  <tt class="py-line">        <tt class="py-name">date</tt> <tt class="py-op">=</tt> <tt id="link-1817" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1817', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1818" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1818', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt> </tt>
-<a name="L2003"></a><tt class="py-lineno">2003</tt>  <tt class="py-line"> </tt>
-<a name="L2004"></a><tt class="py-lineno">2004</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">date</tt><tt class="py-op">,</tt> <tt class="py-name">DatetimeElement</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2005"></a><tt class="py-lineno">2005</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">date</tt><tt class="py-op">.</tt><tt id="link-1819" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1851', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">stringify_date</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2045"></a><tt class="py-lineno">2045</tt>  <tt class="py-line"> </tt>
+<a name="L2046"></a><tt class="py-lineno">2046</tt>  <tt class="py-line">        <tt class="py-name">date</tt> <tt class="py-op">=</tt> <tt id="link-1852" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1852', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1853" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-1853', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt> </tt>
+<a name="L2047"></a><tt class="py-lineno">2047</tt>  <tt class="py-line"> </tt>
+<a name="L2048"></a><tt class="py-lineno">2048</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">date</tt><tt class="py-op">,</tt> <tt class="py-name">DatetimeElement</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2049"></a><tt class="py-lineno">2049</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">date</tt><tt class="py-op">.</tt><tt id="link-1854" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1819', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">datetime</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2006"></a><tt class="py-lineno">2006</tt>  <tt class="py-line"> </tt>
-<a name="L2007"></a><tt class="py-lineno">2007</tt>  <tt class="py-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">date</tt><tt class="py-op">.</tt><tt id="link-1820" class="py-name"><a title="lxml.objectify.BoolElement.pyval
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1854', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">datetime</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2050"></a><tt class="py-lineno">2050</tt>  <tt class="py-line"> </tt>
+<a name="L2051"></a><tt class="py-lineno">2051</tt>  <tt class="py-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">date</tt><tt class="py-op">.</tt><tt id="link-1855" class="py-name"><a title="lxml.objectify.BoolElement.pyval
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1820', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">parse_date</tt><tt class="py-op">(</tt><tt class="py-name">stringify_date</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2008"></a><tt class="py-lineno">2008</tt>  <tt class="py-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">date</tt><tt class="py-op">.</tt><tt id="link-1821" class="py-name"><a title="lxml.etree.QName.text
+lxml.objectify.StringElement.pyval" class="py-name" href="#" onclick="return doclink('link-1855', 'pyval', 'link-360');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">parse_date</tt><tt class="py-op">(</tt><tt class="py-name">stringify_date</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2052"></a><tt class="py-lineno">2052</tt>  <tt class="py-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">date</tt><tt class="py-op">.</tt><tt id="link-1856" 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-1821', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">stringify_date</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2009"></a><tt class="py-lineno">2009</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path"></a><div id="ObjectifyTestCase.test_object_path-def"><a name="L2010"></a><tt class="py-lineno">2010</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path">test_object_path</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="ObjectifyTestCase.test_object_path-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path-expanded"><a name="L2011"></a><tt class="py-lineno">2011</tt>  <tt class="py-line">        <tt id="link-1822" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1822', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1823" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1856', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">stringify_date</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2053"></a><tt class="py-lineno">2053</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path"></a><div id="ObjectifyTestCase.test_object_path-def"><a name="L2054"></a><tt class="py-lineno">2054</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path">test_object_path</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="ObjectifyTestCase.test_object_path-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path-expanded"><a name="L2055"></a><tt class="py-lineno">2055</tt>  <tt class="py-line">        <tt id="link-1857" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1857', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1858" 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-1823', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1824" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1858', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1859" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1824', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2012"></a><tt class="py-lineno">2012</tt>  <tt class="py-line">        <tt id="link-1825" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1825', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1826" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1826', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1827" class="py-name" targets="Class lxml.objectify.ObjectPath=lxml.objectify.ObjectPath-class.html"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1827', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2013"></a><tt class="py-lineno">2013</tt>  <tt class="py-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-1828" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1828', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1829" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1859', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2056"></a><tt class="py-lineno">2056</tt>  <tt class="py-line">        <tt id="link-1860" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1860', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1861" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1861', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1862" class="py-name" targets="Class lxml.objectify.ObjectPath=lxml.objectify.ObjectPath-class.html"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1862', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2057"></a><tt class="py-lineno">2057</tt>  <tt class="py-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-1863" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1863', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1864" 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-1829', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-1830" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1830', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1831" class="py-name" targets="Method lxml.etree._Element.find()=lxml.etree._Element-class.html#find,Method lxml.etree._ElementTree.find()=lxml.etree._ElementTree-class.html#find,Variable lxml.objectify.ObjectPath.find=lxml.objectify.ObjectPath-class.html#find,Function lxml.tests.selftest.find()=lxml.tests.selftest-module.html#find,Function lxml.tests.selftest2.find()=lxml.tests.selftest2-module.html#find"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1864', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-1865" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1865', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1866" class="py-name" targets="Method lxml.etree._Element.find()=lxml.etree._Element-class.html#find,Method lxml.etree._ElementTree.find()=lxml.etree._ElementTree-class.html#find,Variable lxml.objectify.ObjectPath.find=lxml.objectify.ObjectPath-class.html#find,Function lxml.tests.selftest.find()=lxml.tests.selftest-module.html#find,Function lxml.tests.selftest2.find()=lxml.tests.selftest2-module.html#find"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-1831', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-1832" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1832', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1833" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-1866', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-1867" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1867', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1868" 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-1833', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2014"></a><tt class="py-lineno">2014</tt>  <tt class="py-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-1834" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1834', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1835" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1868', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2058"></a><tt class="py-lineno">2058</tt>  <tt class="py-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-1869" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1869', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1870" 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-1835', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-1836" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1836', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1837" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1837', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1838" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1870', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-1871" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1871', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1872" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1872', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1873" 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-1838', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2015"></a><tt class="py-lineno">2015</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_list"></a><div id="ObjectifyTestCase.test_object_path_list-def"><a name="L2016"></a><tt class="py-lineno">2016</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_list">test_object_path_list</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="ObjectifyTestCase.test_object_path_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_list-expanded"><a name="L2017"></a><tt class="py-lineno">2017</tt>  <tt class="py-line">        <tt id="link-1839" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1839', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1840" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1873', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2059"></a><tt class="py-lineno">2059</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_list"></a><div id="ObjectifyTestCase.test_object_path_list-def"><a name="L2060"></a><tt class="py-lineno">2060</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_list">test_object_path_list</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="ObjectifyTestCase.test_object_path_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_list-expanded"><a name="L2061"></a><tt class="py-lineno">2061</tt>  <tt class="py-line">        <tt id="link-1874" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1874', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1875" 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-1840', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1841" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1875', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1876" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1841', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2018"></a><tt class="py-lineno">2018</tt>  <tt class="py-line">        <tt id="link-1842" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1842', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1843" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1843', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1844" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1844', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2019"></a><tt class="py-lineno">2019</tt>  <tt class="py-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-1845" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1845', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1846" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1876', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2062"></a><tt class="py-lineno">2062</tt>  <tt class="py-line">        <tt id="link-1877" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1877', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1878" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1878', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1879" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1879', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2063"></a><tt class="py-lineno">2063</tt>  <tt class="py-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-1880" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1880', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1881" 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-1846', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-1847" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1847', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1848" class="py-name"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1881', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-1882" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1882', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1883" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-1848', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-1849" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1849', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1850" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-1883', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-1884" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1884', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1885" 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-1850', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2020"></a><tt class="py-lineno">2020</tt>  <tt class="py-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-1851" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1851', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1852" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1885', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2064"></a><tt class="py-lineno">2064</tt>  <tt class="py-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-1886" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1886', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1887" 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-1852', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-1853" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1853', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1854" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1854', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1855" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1887', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-1888" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1888', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1889" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1889', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1890" 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-1855', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2021"></a><tt class="py-lineno">2021</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_fail"></a><div id="ObjectifyTestCase.test_object_path_fail-def"><a name="L2022"></a><tt class="py-lineno">2022</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_fail-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_fail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail">test_object_path_fail</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="ObjectifyTestCase.test_object_path_fail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_fail-expanded"><a name="L2023"></a><tt class="py-lineno">2023</tt>  <tt class="py-line">        <tt id="link-1856" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1856', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1857" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1890', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2065"></a><tt class="py-lineno">2065</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_fail"></a><div id="ObjectifyTestCase.test_object_path_fail-def"><a name="L2066"></a><tt class="py-lineno">2066</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_fail-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_fail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail">test_object_path_fail</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="ObjectifyTestCase.test_object_path_fail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_fail-expanded"><a name="L2067"></a><tt class="py-lineno">2067</tt>  <tt class="py-line">        <tt id="link-1891" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1891', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1892" 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-1857', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1858" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1892', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1893" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1858', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2024"></a><tt class="py-lineno">2024</tt>  <tt class="py-line">        <tt id="link-1859" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1859', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1860" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1860', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1861" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1861', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2025"></a><tt class="py-lineno">2025</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-1862" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1862', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt id="link-1863" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1863', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2026"></a><tt class="py-lineno">2026</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_default_absolute"></a><div id="ObjectifyTestCase.test_object_path_default_absolute-def"><a name="L2027"></a><tt class="py-lineno">2027</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_default_absolute-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_default_absolute');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_default_absolute">test_object_path_default_absolute</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="ObjectifyTestCase.test_object_path_default_absolute-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_default_absolute-expanded"><a name="L2028"></a><tt class="py-lineno">2028</tt>  <tt class="py-line">        <tt id="link-1864" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1864', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1865" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1893', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2068"></a><tt class="py-lineno">2068</tt>  <tt class="py-line">        <tt id="link-1894" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1894', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1895" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1895', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1896" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1896', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2069"></a><tt class="py-lineno">2069</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-1897" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1897', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt id="link-1898" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1898', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2070"></a><tt class="py-lineno">2070</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_default_absolute"></a><div id="ObjectifyTestCase.test_object_path_default_absolute-def"><a name="L2071"></a><tt class="py-lineno">2071</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_default_absolute-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_default_absolute');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_default_absolute">test_object_path_default_absolute</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="ObjectifyTestCase.test_object_path_default_absolute-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_default_absolute-expanded"><a name="L2072"></a><tt class="py-lineno">2072</tt>  <tt class="py-line">        <tt id="link-1899" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1899', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1900" 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-1865', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1866" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1900', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1901" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1866', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2029"></a><tt class="py-lineno">2029</tt>  <tt class="py-line">        <tt id="link-1867" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1867', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1868" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1868', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1869" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1869', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2030"></a><tt class="py-lineno">2030</tt>  <tt class="py-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-1870" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1870', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1871" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1871', 'root', 'link-144');">root</a></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="L2031"></a><tt class="py-lineno">2031</tt>  <tt class="py-line">        <tt id="link-1872" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1872', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1873" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1873', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1874" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1874', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c99.c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2032"></a><tt class="py-lineno">2032</tt>  <tt class="py-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-1875" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1875', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1876" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1876', 'root', 'link-144');">root</a></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="L2033"></a><tt class="py-lineno">2033</tt>  <tt class="py-line">        <tt id="link-1877" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1877', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1878" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1878', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1879" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1879', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"notroot.c99.c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2034"></a><tt class="py-lineno">2034</tt>  <tt class="py-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-1880" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1880', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1881" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1881', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2035"></a><tt class="py-lineno">2035</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_default_relative"></a><div id="ObjectifyTestCase.test_object_path_default_relative-def"><a name="L2036"></a><tt class="py-lineno">2036</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_default_relative-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_default_relative');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_default_relative">test_object_path_default_relative</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="ObjectifyTestCase.test_object_path_default_relative-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_default_relative-expanded"><a name="L2037"></a><tt class="py-lineno">2037</tt>  <tt class="py-line">        <tt id="link-1882" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1882', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1883" 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-1883', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1884" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1901', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2073"></a><tt class="py-lineno">2073</tt>  <tt class="py-line">        <tt id="link-1902" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1902', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1903" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1903', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1904" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1904', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2074"></a><tt class="py-lineno">2074</tt>  <tt class="py-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-1905" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1905', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1906" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1906', 'root', 'link-144');">root</a></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="L2075"></a><tt class="py-lineno">2075</tt>  <tt class="py-line">        <tt id="link-1907" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1907', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1908" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1908', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1909" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1909', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c99.c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2076"></a><tt class="py-lineno">2076</tt>  <tt class="py-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-1910" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1910', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1911" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1911', 'root', 'link-144');">root</a></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="L2077"></a><tt class="py-lineno">2077</tt>  <tt class="py-line">        <tt id="link-1912" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1912', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1913" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1913', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1914" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1914', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"notroot.c99.c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2078"></a><tt class="py-lineno">2078</tt>  <tt class="py-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-1915" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1915', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1916" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1916', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2079"></a><tt class="py-lineno">2079</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_default_relative"></a><div id="ObjectifyTestCase.test_object_path_default_relative-def"><a name="L2080"></a><tt class="py-lineno">2080</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_default_relative-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_default_relative');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_default_relative">test_object_path_default_relative</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="ObjectifyTestCase.test_object_path_default_relative-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_default_relative-expanded"><a name="L2081"></a><tt class="py-lineno">2081</tt>  <tt class="py-line">        <tt id="link-1917" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1917', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1918" 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-1918', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1919" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1884', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2038"></a><tt class="py-lineno">2038</tt>  <tt class="py-line">        <tt id="link-1885" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1885', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1886" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1886', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1887" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1887', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">".c1.c99"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2039"></a><tt class="py-lineno">2039</tt>  <tt class="py-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-1888" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1888', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1889" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1889', 'root', 'link-144');">root</a></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="L2040"></a><tt class="py-lineno">2040</tt>  <tt class="py-line">        <tt id="link-1890" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1890', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1891" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1891', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1892" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1892', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">".c99.c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2041"></a><tt class="py-lineno">2041</tt>  <tt class="py-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-1893" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1893', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1894" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1894', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2042"></a><tt class="py-lineno">2042</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_syntax"></a><div id="ObjectifyTestCase.test_object_path_syntax-def"><a name="L2043"></a><tt class="py-lineno">2043</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_syntax-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_syntax');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_syntax">test_object_path_syntax</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="ObjectifyTestCase.test_object_path_syntax-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_syntax-expanded"><a name="L2044"></a><tt class="py-lineno">2044</tt>  <tt class="py-line">        <tt id="link-1895" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1895', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1896" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1919', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2082"></a><tt class="py-lineno">2082</tt>  <tt class="py-line">        <tt id="link-1920" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1920', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1921" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1921', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1922" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1922', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">".c1.c99"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2083"></a><tt class="py-lineno">2083</tt>  <tt class="py-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-1923" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1923', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1924" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1924', 'root', 'link-144');">root</a></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="L2084"></a><tt class="py-lineno">2084</tt>  <tt class="py-line">        <tt id="link-1925" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1925', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1926" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1926', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1927" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1927', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">".c99.c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2085"></a><tt class="py-lineno">2085</tt>  <tt class="py-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-1928" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1928', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1929" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1929', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2086"></a><tt class="py-lineno">2086</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_syntax"></a><div id="ObjectifyTestCase.test_object_path_syntax-def"><a name="L2087"></a><tt class="py-lineno">2087</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_syntax-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_syntax');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_syntax">test_object_path_syntax</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="ObjectifyTestCase.test_object_path_syntax-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_syntax-expanded"><a name="L2088"></a><tt class="py-lineno">2088</tt>  <tt class="py-line">        <tt id="link-1930" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1930', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1931" 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-1896', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1897" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1931', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1932" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1897', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2045"></a><tt class="py-lineno">2045</tt>  <tt class="py-line">        <tt id="link-1898" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1898', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1899" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1899', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1900" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1900', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt><tt class="py-string">"root .    {objectified}c1.   c2"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2046"></a><tt class="py-lineno">2046</tt>  <tt class="py-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-1901" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1901', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1902" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1932', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2089"></a><tt class="py-lineno">2089</tt>  <tt class="py-line">        <tt id="link-1933" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1933', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1934" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1934', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1935" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1935', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt><tt class="py-string">"root .    {objectified}c1.   c2"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2090"></a><tt class="py-lineno">2090</tt>  <tt class="py-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-1936" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1936', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1937" 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-1902', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-1903" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1903', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1904" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1904', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1905" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1937', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-1938" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1938', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1939" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1939', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1940" 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-1905', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2047"></a><tt class="py-lineno">2047</tt>  <tt class="py-line"> </tt>
-<a name="L2048"></a><tt class="py-lineno">2048</tt>  <tt class="py-line">        <tt id="link-1906" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1906', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1907" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1907', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1908" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1908', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt><tt class="py-string">"   root.{objectified}  c1.c2  [ 0 ]   "</tt><tt class="py-op">)</tt> </tt>
-<a name="L2049"></a><tt class="py-lineno">2049</tt>  <tt class="py-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-1909" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1909', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1910" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1940', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2091"></a><tt class="py-lineno">2091</tt>  <tt class="py-line"> </tt>
+<a name="L2092"></a><tt class="py-lineno">2092</tt>  <tt class="py-line">        <tt id="link-1941" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1941', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1942" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1942', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1943" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1943', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt><tt class="py-string">"   root.{objectified}  c1.c2  [ 0 ]   "</tt><tt class="py-op">)</tt> </tt>
+<a name="L2093"></a><tt class="py-lineno">2093</tt>  <tt class="py-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-1944" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1944', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1945" 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-1910', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-1911" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1911', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1912" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1912', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1913" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1945', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-1946" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1946', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1947" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1947', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1948" 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-1913', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2050"></a><tt class="py-lineno">2050</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_fail_parse_empty"></a><div id="ObjectifyTestCase.test_object_path_fail_parse_empty-def"><a name="L2051"></a><tt class="py-lineno">2051</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_fail_parse_empty-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_fail_parse_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail_parse_empty">test_object_path_fail_parse_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="ObjectifyTestCase.test_object_path_fail_parse_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_fail_parse_empty-expanded"><a name="L2052"></a><tt class="py-lineno">2052</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 id="link-1914" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1914', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1915" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1915', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">,</tt> <tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2053"></a><tt class="py-lineno">2053</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_fail_parse_empty_list"></a><div id="ObjectifyTestCase.test_object_path_fail_parse_empty_list-def"><a name="L2054"></a><tt class="py-lineno">2054</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_fail_parse_empty_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_fail_parse_empty_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail_parse_empty_list">test_object_path_fail_parse_empty_list</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="ObjectifyTestCase.test_object_path_fail_parse_empty_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_fail_parse_empty_list-expanded"><a name="L2055"></a><tt class="py-lineno">2055</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 id="link-1916" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1916', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1917" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1917', 'ObjectPath', 'link-1827');">ObjectPath</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="L2056"></a><tt class="py-lineno">2056</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_hasattr"></a><div id="ObjectifyTestCase.test_object_path_hasattr-def"><a name="L2057"></a><tt class="py-lineno">2057</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_hasattr-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_hasattr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_hasattr">test_object_path_hasattr</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="ObjectifyTestCase.test_object_path_hasattr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_hasattr-expanded"><a name="L2058"></a><tt class="py-lineno">2058</tt>  <tt class="py-line">        <tt id="link-1918" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1918', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1919" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1948', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2094"></a><tt class="py-lineno">2094</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_fail_parse_empty"></a><div id="ObjectifyTestCase.test_object_path_fail_parse_empty-def"><a name="L2095"></a><tt class="py-lineno">2095</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_fail_parse_empty-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_fail_parse_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail_parse_empty">test_object_path_fail_parse_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="ObjectifyTestCase.test_object_path_fail_parse_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_fail_parse_empty-expanded"><a name="L2096"></a><tt class="py-lineno">2096</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 id="link-1949" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1949', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1950" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1950', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">,</tt> <tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2097"></a><tt class="py-lineno">2097</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_fail_parse_empty_list"></a><div id="ObjectifyTestCase.test_object_path_fail_parse_empty_list-def"><a name="L2098"></a><tt class="py-lineno">2098</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_fail_parse_empty_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_fail_parse_empty_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail_parse_empty_list">test_object_path_fail_parse_empty_list</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="ObjectifyTestCase.test_object_path_fail_parse_empty_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_fail_parse_empty_list-expanded"><a name="L2099"></a><tt class="py-lineno">2099</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 id="link-1951" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1951', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1952" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1952', 'ObjectPath', 'link-1862');">ObjectPath</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="L2100"></a><tt class="py-lineno">2100</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_hasattr"></a><div id="ObjectifyTestCase.test_object_path_hasattr-def"><a name="L2101"></a><tt class="py-lineno">2101</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_hasattr-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_hasattr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_hasattr">test_object_path_hasattr</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="ObjectifyTestCase.test_object_path_hasattr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_hasattr-expanded"><a name="L2102"></a><tt class="py-lineno">2102</tt>  <tt class="py-line">        <tt id="link-1953" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1953', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1954" 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-1919', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1920" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1954', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1955" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1920', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2059"></a><tt class="py-lineno">2059</tt>  <tt class="py-line">        <tt id="link-1921" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1921', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1922" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1922', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1923" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1923', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2060"></a><tt class="py-lineno">2060</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-1924" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1924', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1925" 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-1925', 'hasattr', 'link-1925');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-1926" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1926', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2061"></a><tt class="py-lineno">2061</tt>  <tt class="py-line">        <tt id="link-1927" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1927', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1928" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1928', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1929" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1929', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2062"></a><tt class="py-lineno">2062</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-1930" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1930', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1931" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-1931', 'hasattr', 'link-1925');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-1932" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1932', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2063"></a><tt class="py-lineno">2063</tt>  <tt class="py-line">        <tt id="link-1933" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1933', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1934" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1934', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1935" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1935', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2064"></a><tt class="py-lineno">2064</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-1936" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1936', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1937" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-1937', 'hasattr', 'link-1925');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-1938" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1938', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2065"></a><tt class="py-lineno">2065</tt>  <tt class="py-line">        <tt id="link-1939" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1939', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1940" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1940', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1941" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1941', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.{otherNS}c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2066"></a><tt class="py-lineno">2066</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-1942" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1942', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1943" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-1943', 'hasattr', 'link-1925');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-1944" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1944', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2067"></a><tt class="py-lineno">2067</tt>  <tt class="py-line">        <tt id="link-1945" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1945', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1946" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1946', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1947" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1947', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2[1]"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2068"></a><tt class="py-lineno">2068</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-1948" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1948', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1949" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-1949', 'hasattr', 'link-1925');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-1950" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1950', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2069"></a><tt class="py-lineno">2069</tt>  <tt class="py-line">        <tt id="link-1951" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1951', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1952" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1952', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1953" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1953', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2[2]"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2070"></a><tt class="py-lineno">2070</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-1954" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1954', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1955" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-1955', 'hasattr', 'link-1925');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-1956" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1956', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2071"></a><tt class="py-lineno">2071</tt>  <tt class="py-line">        <tt id="link-1957" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1957', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1958" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1958', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1959" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1959', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2[3]"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2072"></a><tt class="py-lineno">2072</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1960" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1960', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1961" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1961', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1962" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-1962', 'hasattr', 'link-1925');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-1963" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1963', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2073"></a><tt class="py-lineno">2073</tt>  <tt class="py-line">        <tt id="link-1964" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1964', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1965" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1965', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1966" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1966', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1[1].c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2074"></a><tt class="py-lineno">2074</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1967" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1967', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1968" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1968', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1969" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-1969', 'hasattr', 'link-1925');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-1970" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1970', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2075"></a><tt class="py-lineno">2075</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_dot"></a><div id="ObjectifyTestCase.test_object_path_dot-def"><a name="L2076"></a><tt class="py-lineno">2076</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_dot-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_dot');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot">test_object_path_dot</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="ObjectifyTestCase.test_object_path_dot-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_dot-expanded"><a name="L2077"></a><tt class="py-lineno">2077</tt>  <tt class="py-line">        <tt id="link-1971" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1971', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1972" 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-1972', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1973" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1955', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2103"></a><tt class="py-lineno">2103</tt>  <tt class="py-line">        <tt id="link-1956" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1956', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1957" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1957', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1958" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1958', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2104"></a><tt class="py-lineno">2104</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-1959" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1959', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1960" 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-1960', 'hasattr', 'link-1960');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-1961" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1961', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2105"></a><tt class="py-lineno">2105</tt>  <tt class="py-line">        <tt id="link-1962" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1962', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1963" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1963', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1964" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1964', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2106"></a><tt class="py-lineno">2106</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-1965" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1965', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1966" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-1966', 'hasattr', 'link-1960');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-1967" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1967', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2107"></a><tt class="py-lineno">2107</tt>  <tt class="py-line">        <tt id="link-1968" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1968', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1969" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1969', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1970" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1970', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2108"></a><tt class="py-lineno">2108</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-1971" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1971', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1972" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-1972', 'hasattr', 'link-1960');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-1973" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1973', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2109"></a><tt class="py-lineno">2109</tt>  <tt class="py-line">        <tt id="link-1974" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1974', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1975" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1975', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1976" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1976', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.{otherNS}c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2110"></a><tt class="py-lineno">2110</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-1977" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1977', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1978" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-1978', 'hasattr', 'link-1960');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-1979" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1979', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2111"></a><tt class="py-lineno">2111</tt>  <tt class="py-line">        <tt id="link-1980" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1980', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1981" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1981', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1982" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1982', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2[1]"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2112"></a><tt class="py-lineno">2112</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-1983" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1983', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1984" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-1984', 'hasattr', 'link-1960');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-1985" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1985', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2113"></a><tt class="py-lineno">2113</tt>  <tt class="py-line">        <tt id="link-1986" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1986', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1987" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1987', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1988" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1988', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2[2]"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2114"></a><tt class="py-lineno">2114</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-1989" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1989', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1990" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-1990', 'hasattr', 'link-1960');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-1991" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1991', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2115"></a><tt class="py-lineno">2115</tt>  <tt class="py-line">        <tt id="link-1992" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1992', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1993" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1993', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1994" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1994', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2[3]"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2116"></a><tt class="py-lineno">2116</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1995" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-1995', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-1996" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1996', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-1997" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-1997', 'hasattr', 'link-1960');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-1998" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1998', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2117"></a><tt class="py-lineno">2117</tt>  <tt class="py-line">        <tt id="link-1999" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1999', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2000" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2000', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2001" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2001', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1[1].c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2118"></a><tt class="py-lineno">2118</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2002" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-2002', 'assertFalse', 'link-614');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-2003" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2003', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2004" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-2004', 'hasattr', 'link-1960');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-2005" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2005', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2119"></a><tt class="py-lineno">2119</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_dot"></a><div id="ObjectifyTestCase.test_object_path_dot-def"><a name="L2120"></a><tt class="py-lineno">2120</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_dot-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_dot');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot">test_object_path_dot</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="ObjectifyTestCase.test_object_path_dot-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_dot-expanded"><a name="L2121"></a><tt class="py-lineno">2121</tt>  <tt class="py-line">        <tt id="link-2006" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2006', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2007" 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-2007', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2008" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1973', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2078"></a><tt class="py-lineno">2078</tt>  <tt class="py-line">        <tt id="link-1974" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1974', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1975" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1975', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1976" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1976', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"."</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2079"></a><tt class="py-lineno">2079</tt>  <tt class="py-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-1977" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1977', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1978" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2008', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2122"></a><tt class="py-lineno">2122</tt>  <tt class="py-line">        <tt id="link-2009" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2009', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2010" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2010', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2011" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2011', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"."</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2123"></a><tt class="py-lineno">2123</tt>  <tt class="py-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-2012" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2012', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2013" 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-1978', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-1979" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1979', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1980" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1980', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1981" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2013', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2014" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2014', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2015" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2015', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2016" 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-1981', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2080"></a><tt class="py-lineno">2080</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_dot_list"></a><div id="ObjectifyTestCase.test_object_path_dot_list-def"><a name="L2081"></a><tt class="py-lineno">2081</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_dot_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_dot_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_list">test_object_path_dot_list</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="ObjectifyTestCase.test_object_path_dot_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_dot_list-expanded"><a name="L2082"></a><tt class="py-lineno">2082</tt>  <tt class="py-line">        <tt id="link-1982" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1982', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1983" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2016', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2124"></a><tt class="py-lineno">2124</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_dot_list"></a><div id="ObjectifyTestCase.test_object_path_dot_list-def"><a name="L2125"></a><tt class="py-lineno">2125</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_dot_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_dot_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_list">test_object_path_dot_list</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="ObjectifyTestCase.test_object_path_dot_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_dot_list-expanded"><a name="L2126"></a><tt class="py-lineno">2126</tt>  <tt class="py-line">        <tt id="link-2017" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2017', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2018" 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-1983', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1984" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2018', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2019" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1984', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2083"></a><tt class="py-lineno">2083</tt>  <tt class="py-line">        <tt id="link-1985" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1985', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1986" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1986', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1987" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1987', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2084"></a><tt class="py-lineno">2084</tt>  <tt class="py-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-1988" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1988', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1989" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2019', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2127"></a><tt class="py-lineno">2127</tt>  <tt class="py-line">        <tt id="link-2020" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2020', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2021" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2021', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2022" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2022', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2128"></a><tt class="py-lineno">2128</tt>  <tt class="py-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-2023" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2023', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2024" 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-1989', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-1990" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1990', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-1991" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1991', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-1992" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2024', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2025" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2025', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2026" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2026', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2027" 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-1992', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2085"></a><tt class="py-lineno">2085</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_dot_root"></a><div id="ObjectifyTestCase.test_object_path_dot_root-def"><a name="L2086"></a><tt class="py-lineno">2086</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_dot_root-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_dot_root');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_root">test_object_path_dot_root</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="ObjectifyTestCase.test_object_path_dot_root-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_dot_root-expanded"><a name="L2087"></a><tt class="py-lineno">2087</tt>  <tt class="py-line">        <tt id="link-1993" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1993', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1994" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2027', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2129"></a><tt class="py-lineno">2129</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_dot_root"></a><div id="ObjectifyTestCase.test_object_path_dot_root-def"><a name="L2130"></a><tt class="py-lineno">2130</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_dot_root-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_dot_root');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_root">test_object_path_dot_root</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="ObjectifyTestCase.test_object_path_dot_root-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_dot_root-expanded"><a name="L2131"></a><tt class="py-lineno">2131</tt>  <tt class="py-line">        <tt id="link-2028" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2028', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2029" 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-1994', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1995" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2029', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2030" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-1995', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2088"></a><tt class="py-lineno">2088</tt>  <tt class="py-line">        <tt id="link-1996" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-1996', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-1997" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-1997', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-1998" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-1998', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">".c1.c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2089"></a><tt class="py-lineno">2089</tt>  <tt class="py-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-1999" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1999', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2000" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2030', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2132"></a><tt class="py-lineno">2132</tt>  <tt class="py-line">        <tt id="link-2031" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2031', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2032" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2032', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2033" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2033', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">".c1.c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2133"></a><tt class="py-lineno">2133</tt>  <tt class="py-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-2034" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2034', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2035" 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-2000', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2001" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2001', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2002" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2002', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2003" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2035', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2036" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2036', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2037" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2037', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2038" 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-2003', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2090"></a><tt class="py-lineno">2090</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_dot_root_list"></a><div id="ObjectifyTestCase.test_object_path_dot_root_list-def"><a name="L2091"></a><tt class="py-lineno">2091</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_dot_root_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_dot_root_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_root_list">test_object_path_dot_root_list</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="ObjectifyTestCase.test_object_path_dot_root_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_dot_root_list-expanded"><a name="L2092"></a><tt class="py-lineno">2092</tt>  <tt class="py-line">        <tt id="link-2004" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2004', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2005" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2038', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2134"></a><tt class="py-lineno">2134</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_dot_root_list"></a><div id="ObjectifyTestCase.test_object_path_dot_root_list-def"><a name="L2135"></a><tt class="py-lineno">2135</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_dot_root_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_dot_root_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_root_list">test_object_path_dot_root_list</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="ObjectifyTestCase.test_object_path_dot_root_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_dot_root_list-expanded"><a name="L2136"></a><tt class="py-lineno">2136</tt>  <tt class="py-line">        <tt id="link-2039" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2039', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2040" 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-2005', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2006" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2040', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2041" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2006', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2093"></a><tt class="py-lineno">2093</tt>  <tt class="py-line">        <tt id="link-2007" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2007', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2008" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2008', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2009" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2009', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2094"></a><tt class="py-lineno">2094</tt>  <tt class="py-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-2010" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2010', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2011" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2041', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2137"></a><tt class="py-lineno">2137</tt>  <tt class="py-line">        <tt id="link-2042" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2042', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2043" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2043', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2044" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2044', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2138"></a><tt class="py-lineno">2138</tt>  <tt class="py-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-2045" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2045', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2046" 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-2011', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2012" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2012', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2013" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2013', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2014" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2046', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2047" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2047', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2048" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2048', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2049" 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-2014', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2095"></a><tt class="py-lineno">2095</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_index"></a><div id="ObjectifyTestCase.test_object_path_index-def"><a name="L2096"></a><tt class="py-lineno">2096</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_index-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_index');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index">test_object_path_index</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="ObjectifyTestCase.test_object_path_index-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_index-expanded"><a name="L2097"></a><tt class="py-lineno">2097</tt>  <tt class="py-line">        <tt id="link-2015" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2015', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2016" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2049', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2139"></a><tt class="py-lineno">2139</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_index"></a><div id="ObjectifyTestCase.test_object_path_index-def"><a name="L2140"></a><tt class="py-lineno">2140</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_index-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_index');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index">test_object_path_index</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="ObjectifyTestCase.test_object_path_index-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_index-expanded"><a name="L2141"></a><tt class="py-lineno">2141</tt>  <tt class="py-line">        <tt id="link-2050" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2050', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2051" 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-2016', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2017" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2051', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2052" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2017', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2098"></a><tt class="py-lineno">2098</tt>  <tt class="py-line">        <tt id="link-2018" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2018', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2019" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2019', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2020" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2020', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1[0].c2[0]"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2099"></a><tt class="py-lineno">2099</tt>  <tt class="py-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-2021" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2021', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2022" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2052', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2142"></a><tt class="py-lineno">2142</tt>  <tt class="py-line">        <tt id="link-2053" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2053', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2054" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2054', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2055" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2055', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1[0].c2[0]"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2143"></a><tt class="py-lineno">2143</tt>  <tt class="py-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-2056" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2056', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2057" 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-2022', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2023" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2023', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2024" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2024', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2025" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2057', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2058" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2058', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2059" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2059', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2060" 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-2025', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2100"></a><tt class="py-lineno">2100</tt>  <tt class="py-line"> </tt>
-<a name="L2101"></a><tt class="py-lineno">2101</tt>  <tt class="py-line">        <tt id="link-2026" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2026', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2027" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2027', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2028" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2028', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1[0].c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2102"></a><tt class="py-lineno">2102</tt>  <tt class="py-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-2029" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2029', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2030" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2060', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2144"></a><tt class="py-lineno">2144</tt>  <tt class="py-line"> </tt>
+<a name="L2145"></a><tt class="py-lineno">2145</tt>  <tt class="py-line">        <tt id="link-2061" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2061', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2062" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2062', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2063" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2063', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1[0].c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2146"></a><tt class="py-lineno">2146</tt>  <tt class="py-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-2064" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2064', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2065" 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-2030', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2031" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2031', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2032" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2032', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2033" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2065', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2066" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2066', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2067" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2067', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2068" 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-2033', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2103"></a><tt class="py-lineno">2103</tt>  <tt class="py-line"> </tt>
-<a name="L2104"></a><tt class="py-lineno">2104</tt>  <tt class="py-line">        <tt id="link-2034" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2034', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2035" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2035', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2036" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2036', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1[0].c2[1]"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2105"></a><tt class="py-lineno">2105</tt>  <tt class="py-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-2037" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2037', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2038" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2068', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2147"></a><tt class="py-lineno">2147</tt>  <tt class="py-line"> </tt>
+<a name="L2148"></a><tt class="py-lineno">2148</tt>  <tt class="py-line">        <tt id="link-2069" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2069', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2070" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2070', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2071" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2071', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1[0].c2[1]"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2149"></a><tt class="py-lineno">2149</tt>  <tt class="py-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-2072" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2072', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2073" 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-2038', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2039" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2039', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2040" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2040', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2041" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2073', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2074" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2074', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2075" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2075', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2076" 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-2041', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2106"></a><tt class="py-lineno">2106</tt>  <tt class="py-line"> </tt>
-<a name="L2107"></a><tt class="py-lineno">2107</tt>  <tt class="py-line">        <tt id="link-2042" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2042', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2043" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2043', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2044" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2044', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2[2]"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2108"></a><tt class="py-lineno">2108</tt>  <tt class="py-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-2045" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2045', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2046" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2076', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2150"></a><tt class="py-lineno">2150</tt>  <tt class="py-line"> </tt>
+<a name="L2151"></a><tt class="py-lineno">2151</tt>  <tt class="py-line">        <tt id="link-2077" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2077', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2078" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2078', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2079" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2079', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2[2]"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2152"></a><tt class="py-lineno">2152</tt>  <tt class="py-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-2080" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2080', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2081" 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-2046', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2047" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2047', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2048" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2048', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2049" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2081', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2082" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2082', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2083" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2083', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2084" 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-2049', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2109"></a><tt class="py-lineno">2109</tt>  <tt class="py-line"> </tt>
-<a name="L2110"></a><tt class="py-lineno">2110</tt>  <tt class="py-line">        <tt id="link-2050" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2050', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2051" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2051', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2052" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2052', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2[-1]"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2111"></a><tt class="py-lineno">2111</tt>  <tt class="py-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-2053" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2053', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2054" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2084', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2153"></a><tt class="py-lineno">2153</tt>  <tt class="py-line"> </tt>
+<a name="L2154"></a><tt class="py-lineno">2154</tt>  <tt class="py-line">        <tt id="link-2085" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2085', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2086" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2086', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2087" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2087', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2[-1]"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2155"></a><tt class="py-lineno">2155</tt>  <tt class="py-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-2088" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2088', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2089" 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-2054', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2055" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2055', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2056" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2056', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2057" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2089', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2090" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2090', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2091" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2091', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2092" 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-2057', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2112"></a><tt class="py-lineno">2112</tt>  <tt class="py-line"> </tt>
-<a name="L2113"></a><tt class="py-lineno">2113</tt>  <tt class="py-line">        <tt id="link-2058" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2058', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2059" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2059', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2060" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2060', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2[-3]"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2114"></a><tt class="py-lineno">2114</tt>  <tt class="py-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-2061" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2061', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">[</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-2062" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2092', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2156"></a><tt class="py-lineno">2156</tt>  <tt class="py-line"> </tt>
+<a name="L2157"></a><tt class="py-lineno">2157</tt>  <tt class="py-line">        <tt id="link-2093" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2093', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2094" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2094', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2095" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2095', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2[-3]"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2158"></a><tt class="py-lineno">2158</tt>  <tt class="py-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-2096" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2096', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">[</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-2097" 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-2062', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2063" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2063', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2064" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2064', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2065" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2097', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2098" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2098', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2099" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2099', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2100" 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-2065', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2115"></a><tt class="py-lineno">2115</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_index_list"></a><div id="ObjectifyTestCase.test_object_path_index_list-def"><a name="L2116"></a><tt class="py-lineno">2116</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_index_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_index_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_list">test_object_path_index_list</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="ObjectifyTestCase.test_object_path_index_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_index_list-expanded"><a name="L2117"></a><tt class="py-lineno">2117</tt>  <tt class="py-line">        <tt id="link-2066" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2066', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2067" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2100', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2159"></a><tt class="py-lineno">2159</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_index_list"></a><div id="ObjectifyTestCase.test_object_path_index_list-def"><a name="L2160"></a><tt class="py-lineno">2160</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_index_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_index_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_list">test_object_path_index_list</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="ObjectifyTestCase.test_object_path_index_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_index_list-expanded"><a name="L2161"></a><tt class="py-lineno">2161</tt>  <tt class="py-line">        <tt id="link-2101" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2101', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2102" 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-2067', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2068" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2102', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2103" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2068', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2118"></a><tt class="py-lineno">2118</tt>  <tt class="py-line">        <tt id="link-2069" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2069', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2070" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2070', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2071" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2071', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1[0]'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2[0]'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2119"></a><tt class="py-lineno">2119</tt>  <tt class="py-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-2072" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2072', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2073" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2103', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2162"></a><tt class="py-lineno">2162</tt>  <tt class="py-line">        <tt id="link-2104" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2104', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2105" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2105', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2106" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2106', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1[0]'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2[0]'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2163"></a><tt class="py-lineno">2163</tt>  <tt class="py-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-2107" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2107', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2108" 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-2073', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2074" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2074', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2075" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2075', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2076" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2108', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2109" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2109', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2110" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2110', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2111" 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-2076', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2120"></a><tt class="py-lineno">2120</tt>  <tt class="py-line"> </tt>
-<a name="L2121"></a><tt class="py-lineno">2121</tt>  <tt class="py-line">        <tt id="link-2077" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2077', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2078" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2078', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2079" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2079', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1[0]'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2[2]'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2122"></a><tt class="py-lineno">2122</tt>  <tt class="py-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-2080" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2080', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2081" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2111', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2164"></a><tt class="py-lineno">2164</tt>  <tt class="py-line"> </tt>
+<a name="L2165"></a><tt class="py-lineno">2165</tt>  <tt class="py-line">        <tt id="link-2112" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2112', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2113" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2113', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2114" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2114', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1[0]'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2[2]'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2166"></a><tt class="py-lineno">2166</tt>  <tt class="py-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-2115" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2115', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2116" 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-2081', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2082" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2082', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2083" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2083', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2084" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2116', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2117" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2117', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2118" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2118', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2119" 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-2084', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2123"></a><tt class="py-lineno">2123</tt>  <tt class="py-line"> </tt>
-<a name="L2124"></a><tt class="py-lineno">2124</tt>  <tt class="py-line">        <tt id="link-2085" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2085', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2086" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2086', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2087" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2087', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2[2]'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2125"></a><tt class="py-lineno">2125</tt>  <tt class="py-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-2088" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2088', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2089" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2119', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2167"></a><tt class="py-lineno">2167</tt>  <tt class="py-line"> </tt>
+<a name="L2168"></a><tt class="py-lineno">2168</tt>  <tt class="py-line">        <tt id="link-2120" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2120', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2121" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2121', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2122" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2122', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2[2]'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2169"></a><tt class="py-lineno">2169</tt>  <tt class="py-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-2123" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2123', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2124" 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-2089', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2090" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2090', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2091" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2091', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2092" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2124', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2125" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2125', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2126" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2126', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2127" 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-2092', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2126"></a><tt class="py-lineno">2126</tt>  <tt class="py-line"> </tt>
-<a name="L2127"></a><tt class="py-lineno">2127</tt>  <tt class="py-line">        <tt id="link-2093" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2093', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2094" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2094', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2095" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2095', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2[-1]'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2128"></a><tt class="py-lineno">2128</tt>  <tt class="py-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-2096" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2096', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2097" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2127', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2170"></a><tt class="py-lineno">2170</tt>  <tt class="py-line"> </tt>
+<a name="L2171"></a><tt class="py-lineno">2171</tt>  <tt class="py-line">        <tt id="link-2128" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2128', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2129" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2129', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2130" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2130', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2[-1]'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2172"></a><tt class="py-lineno">2172</tt>  <tt class="py-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-2131" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2131', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2132" 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-2097', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2098" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2098', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2099" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2099', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2100" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2132', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2133" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2133', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2134" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2134', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2135" 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-2100', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2129"></a><tt class="py-lineno">2129</tt>  <tt class="py-line"> </tt>
-<a name="L2130"></a><tt class="py-lineno">2130</tt>  <tt class="py-line">        <tt id="link-2101" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2101', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2102" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2102', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2103" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2103', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2[-3]'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2131"></a><tt class="py-lineno">2131</tt>  <tt class="py-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-2104" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2104', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">[</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-2105" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2135', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2173"></a><tt class="py-lineno">2173</tt>  <tt class="py-line"> </tt>
+<a name="L2174"></a><tt class="py-lineno">2174</tt>  <tt class="py-line">        <tt id="link-2136" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2136', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2137" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2137', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2138" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2138', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2[-3]'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2175"></a><tt class="py-lineno">2175</tt>  <tt class="py-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-2139" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2139', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">[</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-2140" 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-2105', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2106" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2106', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2107" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2107', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2108" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2140', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2141" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2141', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2142" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2142', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2143" 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-2108', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2132"></a><tt class="py-lineno">2132</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_index_fail_parse"></a><div id="ObjectifyTestCase.test_object_path_index_fail_parse-def"><a name="L2133"></a><tt class="py-lineno">2133</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_index_fail_parse-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_index_fail_parse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_fail_parse">test_object_path_index_fail_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="ObjectifyTestCase.test_object_path_index_fail_parse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_index_fail_parse-expanded"><a name="L2134"></a><tt class="py-lineno">2134</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 id="link-2109" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2109', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2110" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2110', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2135"></a><tt class="py-lineno">2135</tt>  <tt class="py-line">                          <tt class="py-string">"root.c1[0].c2[-1-2]"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2136"></a><tt class="py-lineno">2136</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 id="link-2111" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2111', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2112" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2112', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2137"></a><tt class="py-lineno">2137</tt>  <tt class="py-line">                          <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1[0]'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2[-1-2]'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2138"></a><tt class="py-lineno">2138</tt>  <tt class="py-line"> </tt>
-<a name="L2139"></a><tt class="py-lineno">2139</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 id="link-2113" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2113', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2114" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2114', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2140"></a><tt class="py-lineno">2140</tt>  <tt class="py-line">                          <tt class="py-string">"root[2].c1.c2"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2141"></a><tt class="py-lineno">2141</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 id="link-2115" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2115', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2116" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2116', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2142"></a><tt class="py-lineno">2142</tt>  <tt class="py-line">                          <tt class="py-op">[</tt><tt class="py-string">'root[2]'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2143"></a><tt class="py-lineno">2143</tt>  <tt class="py-line"> </tt>
-<a name="L2144"></a><tt class="py-lineno">2144</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 id="link-2117" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2117', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2118" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2118', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2145"></a><tt class="py-lineno">2145</tt>  <tt class="py-line">                          <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2146"></a><tt class="py-lineno">2146</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 id="link-2119" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2119', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2120" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2120', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2147"></a><tt class="py-lineno">2147</tt>  <tt class="py-line">                          <tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2148"></a><tt class="py-lineno">2148</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_index_fail_lookup"></a><div id="ObjectifyTestCase.test_object_path_index_fail_lookup-def"><a name="L2149"></a><tt class="py-lineno">2149</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_index_fail_lookup-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_index_fail_lookup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_fail_lookup">test_object_path_index_fail_lookup</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="ObjectifyTestCase.test_object_path_index_fail_lookup-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_index_fail_lookup-expanded"><a name="L2150"></a><tt class="py-lineno">2150</tt>  <tt class="py-line">        <tt id="link-2121" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2121', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2122" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2143', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2176"></a><tt class="py-lineno">2176</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_index_fail_parse"></a><div id="ObjectifyTestCase.test_object_path_index_fail_parse-def"><a name="L2177"></a><tt class="py-lineno">2177</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_index_fail_parse-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_index_fail_parse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_fail_parse">test_object_path_index_fail_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="ObjectifyTestCase.test_object_path_index_fail_parse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_index_fail_parse-expanded"><a name="L2178"></a><tt class="py-lineno">2178</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 id="link-2144" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2144', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2145" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2145', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2179"></a><tt class="py-lineno">2179</tt>  <tt class="py-line">                          <tt class="py-string">"root.c1[0].c2[-1-2]"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2180"></a><tt class="py-lineno">2180</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 id="link-2146" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2146', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2147" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2147', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2181"></a><tt class="py-lineno">2181</tt>  <tt class="py-line">                          <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1[0]'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2[-1-2]'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2182"></a><tt class="py-lineno">2182</tt>  <tt class="py-line"> </tt>
+<a name="L2183"></a><tt class="py-lineno">2183</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 id="link-2148" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2148', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2149" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2149', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2184"></a><tt class="py-lineno">2184</tt>  <tt class="py-line">                          <tt class="py-string">"root[2].c1.c2"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2185"></a><tt class="py-lineno">2185</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 id="link-2150" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2150', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2151" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2151', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2186"></a><tt class="py-lineno">2186</tt>  <tt class="py-line">                          <tt class="py-op">[</tt><tt class="py-string">'root[2]'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2187"></a><tt class="py-lineno">2187</tt>  <tt class="py-line"> </tt>
+<a name="L2188"></a><tt class="py-lineno">2188</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 id="link-2152" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2152', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2153" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2153', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2189"></a><tt class="py-lineno">2189</tt>  <tt class="py-line">                          <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2190"></a><tt class="py-lineno">2190</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 id="link-2154" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2154', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2155" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2155', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2191"></a><tt class="py-lineno">2191</tt>  <tt class="py-line">                          <tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2192"></a><tt class="py-lineno">2192</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_index_fail_lookup"></a><div id="ObjectifyTestCase.test_object_path_index_fail_lookup-def"><a name="L2193"></a><tt class="py-lineno">2193</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_index_fail_lookup-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_index_fail_lookup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_fail_lookup">test_object_path_index_fail_lookup</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="ObjectifyTestCase.test_object_path_index_fail_lookup-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_index_fail_lookup-expanded"><a name="L2194"></a><tt class="py-lineno">2194</tt>  <tt class="py-line">        <tt id="link-2156" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2156', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2157" 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-2122', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2123" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2157', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2158" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2123', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2151"></a><tt class="py-lineno">2151</tt>  <tt class="py-line">        <tt id="link-2124" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2124', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2125" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2125', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2126" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2126', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt><tt class="py-string">"root.c1[9999].c2"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2152"></a><tt class="py-lineno">2152</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2127" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2127', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt id="link-2128" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2128', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2153"></a><tt class="py-lineno">2153</tt>  <tt class="py-line"> </tt>
-<a name="L2154"></a><tt class="py-lineno">2154</tt>  <tt class="py-line">        <tt id="link-2129" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2129', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2130" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2130', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2131" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2131', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt><tt class="py-string">"root.c1[0].c2[9999]"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2155"></a><tt class="py-lineno">2155</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2132" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2132', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt id="link-2133" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2133', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2156"></a><tt class="py-lineno">2156</tt>  <tt class="py-line"> </tt>
-<a name="L2157"></a><tt class="py-lineno">2157</tt>  <tt class="py-line">        <tt id="link-2134" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2134', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2135" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2135', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2136" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2136', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt><tt class="py-string">".c1[9999].c2[0]"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2158"></a><tt class="py-lineno">2158</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2137" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2137', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt id="link-2138" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2138', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2159"></a><tt class="py-lineno">2159</tt>  <tt class="py-line"> </tt>
-<a name="L2160"></a><tt class="py-lineno">2160</tt>  <tt class="py-line">        <tt id="link-2139" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2139', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2140" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2140', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2141" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2141', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt><tt class="py-string">"root.c1[-2].c2"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2161"></a><tt class="py-lineno">2161</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2142" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2142', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt id="link-2143" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2143', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2162"></a><tt class="py-lineno">2162</tt>  <tt class="py-line"> </tt>
-<a name="L2163"></a><tt class="py-lineno">2163</tt>  <tt class="py-line">        <tt id="link-2144" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2144', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2145" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2145', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2146" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2146', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt><tt class="py-string">"root.c1[0].c2[-4]"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2164"></a><tt class="py-lineno">2164</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2147" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2147', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt id="link-2148" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2148', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2165"></a><tt class="py-lineno">2165</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_ns"></a><div id="ObjectifyTestCase.test_object_path_ns-def"><a name="L2166"></a><tt class="py-lineno">2166</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_ns-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_ns">test_object_path_ns</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="ObjectifyTestCase.test_object_path_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_ns-expanded"><a name="L2167"></a><tt class="py-lineno">2167</tt>  <tt class="py-line">        <tt id="link-2149" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2149', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2150" 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-2150', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2151" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2158', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2195"></a><tt class="py-lineno">2195</tt>  <tt class="py-line">        <tt id="link-2159" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2159', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2160" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2160', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2161" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2161', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt><tt class="py-string">"root.c1[9999].c2"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2196"></a><tt class="py-lineno">2196</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2162" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2162', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt id="link-2163" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2163', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2197"></a><tt class="py-lineno">2197</tt>  <tt class="py-line"> </tt>
+<a name="L2198"></a><tt class="py-lineno">2198</tt>  <tt class="py-line">        <tt id="link-2164" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2164', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2165" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2165', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2166" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2166', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt><tt class="py-string">"root.c1[0].c2[9999]"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2199"></a><tt class="py-lineno">2199</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2167" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2167', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt id="link-2168" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2168', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2200"></a><tt class="py-lineno">2200</tt>  <tt class="py-line"> </tt>
+<a name="L2201"></a><tt class="py-lineno">2201</tt>  <tt class="py-line">        <tt id="link-2169" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2169', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2170" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2170', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2171" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2171', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt><tt class="py-string">".c1[9999].c2[0]"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2202"></a><tt class="py-lineno">2202</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2172" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2172', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt id="link-2173" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2173', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2203"></a><tt class="py-lineno">2203</tt>  <tt class="py-line"> </tt>
+<a name="L2204"></a><tt class="py-lineno">2204</tt>  <tt class="py-line">        <tt id="link-2174" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2174', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2175" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2175', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2176" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2176', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt><tt class="py-string">"root.c1[-2].c2"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2205"></a><tt class="py-lineno">2205</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2177" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2177', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt id="link-2178" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2178', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2206"></a><tt class="py-lineno">2206</tt>  <tt class="py-line"> </tt>
+<a name="L2207"></a><tt class="py-lineno">2207</tt>  <tt class="py-line">        <tt id="link-2179" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2179', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2180" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2180', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2181" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2181', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt><tt class="py-string">"root.c1[0].c2[-4]"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2208"></a><tt class="py-lineno">2208</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2182" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2182', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt id="link-2183" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2183', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2209"></a><tt class="py-lineno">2209</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_ns"></a><div id="ObjectifyTestCase.test_object_path_ns-def"><a name="L2210"></a><tt class="py-lineno">2210</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_ns-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_ns">test_object_path_ns</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="ObjectifyTestCase.test_object_path_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_ns-expanded"><a name="L2211"></a><tt class="py-lineno">2211</tt>  <tt class="py-line">        <tt id="link-2184" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2184', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2185" 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-2185', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2186" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2151', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2168"></a><tt class="py-lineno">2168</tt>  <tt class="py-line">        <tt id="link-2152" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2152', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2153" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2153', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2154" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2154', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"{objectified}root.c1.c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2169"></a><tt class="py-lineno">2169</tt>  <tt class="py-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-2155" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2155', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2156" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2186', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2212"></a><tt class="py-lineno">2212</tt>  <tt class="py-line">        <tt id="link-2187" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2187', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2188" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2188', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2189" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2189', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"{objectified}root.c1.c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2213"></a><tt class="py-lineno">2213</tt>  <tt class="py-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-2190" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2190', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2191" 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-2156', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2157" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2157', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2158" class="py-name"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2191', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2192" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2192', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2193" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2158', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-2159" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2159', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2160" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2193', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-2194" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2194', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2195" 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-2160', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2170"></a><tt class="py-lineno">2170</tt>  <tt class="py-line">        <tt id="link-2161" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2161', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2162" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2162', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2163" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2163', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"{objectified}root.{objectified}c1.c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2171"></a><tt class="py-lineno">2171</tt>  <tt class="py-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-2164" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2164', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2165" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2195', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2214"></a><tt class="py-lineno">2214</tt>  <tt class="py-line">        <tt id="link-2196" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2196', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2197" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2197', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2198" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2198', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"{objectified}root.{objectified}c1.c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2215"></a><tt class="py-lineno">2215</tt>  <tt class="py-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-2199" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2199', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2200" 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-2165', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2166" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2166', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2167" class="py-name"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2200', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2201" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2201', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2202" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2167', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-2168" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2168', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2169" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2202', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-2203" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2203', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2204" 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-2169', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2172"></a><tt class="py-lineno">2172</tt>  <tt class="py-line">        <tt id="link-2170" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2170', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2171" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2171', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2172" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2172', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.{objectified}c1.{objectified}c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2173"></a><tt class="py-lineno">2173</tt>  <tt class="py-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-2173" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2173', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2174" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2204', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2216"></a><tt class="py-lineno">2216</tt>  <tt class="py-line">        <tt id="link-2205" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2205', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2206" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2206', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2207" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2207', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.{objectified}c1.{objectified}c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2217"></a><tt class="py-lineno">2217</tt>  <tt class="py-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-2208" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2208', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2209" 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-2174', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2175" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2175', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2176" class="py-name"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2209', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2210" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2210', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2211" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2176', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-2177" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2177', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2178" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2211', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-2212" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2212', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2213" 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-2178', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2174"></a><tt class="py-lineno">2174</tt>  <tt class="py-line">        <tt id="link-2179" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2179', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2180" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2180', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2181" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2181', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.{objectified}c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2175"></a><tt class="py-lineno">2175</tt>  <tt class="py-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-2182" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2182', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2183" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2213', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2218"></a><tt class="py-lineno">2218</tt>  <tt class="py-line">        <tt id="link-2214" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2214', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2215" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2215', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2216" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2216', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.{objectified}c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2219"></a><tt class="py-lineno">2219</tt>  <tt class="py-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-2217" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2217', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2218" 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-2183', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2184" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2184', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2185" class="py-name"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2218', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2219" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2219', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2220" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2185', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-2186" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2186', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2187" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2220', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-2221" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2221', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2222" 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-2187', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2176"></a><tt class="py-lineno">2176</tt>  <tt class="py-line">        <tt id="link-2188" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2188', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2189" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2189', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2190" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2190', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.{otherNS}c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2177"></a><tt class="py-lineno">2177</tt>  <tt class="py-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">getattr</tt><tt class="py-op">(</tt><tt id="link-2191" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2191', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">,</tt> <tt class="py-string">'{otherNS}c2'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2192" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2222', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2220"></a><tt class="py-lineno">2220</tt>  <tt class="py-line">        <tt id="link-2223" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2223', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2224" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2224', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2225" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2225', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.{otherNS}c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2221"></a><tt class="py-lineno">2221</tt>  <tt class="py-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">getattr</tt><tt class="py-op">(</tt><tt id="link-2226" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2226', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">,</tt> <tt class="py-string">'{otherNS}c2'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2227" 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-2192', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2178"></a><tt class="py-lineno">2178</tt>  <tt class="py-line">                          <tt id="link-2193" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2193', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2194" class="py-name"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2227', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2222"></a><tt class="py-lineno">2222</tt>  <tt class="py-line">                          <tt id="link-2228" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2228', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2229" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2194', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-2195" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2195', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2196" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2229', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-2230" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2230', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2231" 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-2196', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2179"></a><tt class="py-lineno">2179</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_ns_list"></a><div id="ObjectifyTestCase.test_object_path_ns_list-def"><a name="L2180"></a><tt class="py-lineno">2180</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_ns_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_ns_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_ns_list">test_object_path_ns_list</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="ObjectifyTestCase.test_object_path_ns_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_ns_list-expanded"><a name="L2181"></a><tt class="py-lineno">2181</tt>  <tt class="py-line">        <tt id="link-2197" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2197', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2198" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2231', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2223"></a><tt class="py-lineno">2223</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_ns_list"></a><div id="ObjectifyTestCase.test_object_path_ns_list-def"><a name="L2224"></a><tt class="py-lineno">2224</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_ns_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_ns_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_ns_list">test_object_path_ns_list</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="ObjectifyTestCase.test_object_path_ns_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_ns_list-expanded"><a name="L2225"></a><tt class="py-lineno">2225</tt>  <tt class="py-line">        <tt id="link-2232" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2232', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2233" 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-2198', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2199" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2233', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2234" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2199', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2182"></a><tt class="py-lineno">2182</tt>  <tt class="py-line">        <tt id="link-2200" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2200', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2201" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2201', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2202" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2202', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'{objectified}root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2183"></a><tt class="py-lineno">2183</tt>  <tt class="py-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-2203" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2203', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2204" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2234', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2226"></a><tt class="py-lineno">2226</tt>  <tt class="py-line">        <tt id="link-2235" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2235', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2236" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2236', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2237" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2237', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'{objectified}root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2227"></a><tt class="py-lineno">2227</tt>  <tt class="py-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-2238" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2238', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2239" 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-2204', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2205" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2205', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2206" class="py-name"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2239', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2240" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2240', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2241" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2206', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-2207" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2207', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2208" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2241', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-2242" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2242', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2243" 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-2208', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2184"></a><tt class="py-lineno">2184</tt>  <tt class="py-line">        <tt id="link-2209" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2209', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2210" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2210', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2211" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2211', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'{objectified}root'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2185"></a><tt class="py-lineno">2185</tt>  <tt class="py-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-2212" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2212', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2213" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2243', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2228"></a><tt class="py-lineno">2228</tt>  <tt class="py-line">        <tt id="link-2244" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2244', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2245" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2245', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2246" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2246', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'{objectified}root'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'c2'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2229"></a><tt class="py-lineno">2229</tt>  <tt class="py-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-2247" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2247', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2248" 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-2213', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2214" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2214', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2215" class="py-name"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2248', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2249" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2249', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2250" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2215', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-2216" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2216', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2217" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2250', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-2251" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2251', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2252" 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-2217', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2186"></a><tt class="py-lineno">2186</tt>  <tt class="py-line">        <tt id="link-2218" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2218', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2219" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2219', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2220" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2220', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c2'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2187"></a><tt class="py-lineno">2187</tt>  <tt class="py-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-2221" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2221', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2222" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2252', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2230"></a><tt class="py-lineno">2230</tt>  <tt class="py-line">        <tt id="link-2253" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2253', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2254" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2254', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2255" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2255', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c2'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2231"></a><tt class="py-lineno">2231</tt>  <tt class="py-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-2256" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2256', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2257" 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-2222', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2223" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2223', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2224" class="py-name"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2257', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2258" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2258', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2259" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2224', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-2225" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2225', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2226" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2259', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-2260" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2260', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2261" 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-2226', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2188"></a><tt class="py-lineno">2188</tt>  <tt class="py-line">        <tt id="link-2227" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2227', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2228" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2228', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2229" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2229', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c2[2]'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2189"></a><tt class="py-lineno">2189</tt>  <tt class="py-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-2230" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2230', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2231" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2261', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2232"></a><tt class="py-lineno">2232</tt>  <tt class="py-line">        <tt id="link-2262" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2262', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2263" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2263', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2264" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2264', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c2[2]'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2233"></a><tt class="py-lineno">2233</tt>  <tt class="py-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-2265" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2265', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2266" 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-2231', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2232" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2232', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2233" class="py-name"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2266', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2267" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2267', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2268" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2233', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-2234" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2234', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2235" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2268', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-2269" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2269', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2270" 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-2235', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2190"></a><tt class="py-lineno">2190</tt>  <tt class="py-line">        <tt id="link-2236" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2236', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2237" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2237', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2238" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2238', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c2'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2191"></a><tt class="py-lineno">2191</tt>  <tt class="py-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-2239" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2239', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2240" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2270', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2234"></a><tt class="py-lineno">2234</tt>  <tt class="py-line">        <tt id="link-2271" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2271', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2272" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2272', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2273" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2273', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c2'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2235"></a><tt class="py-lineno">2235</tt>  <tt class="py-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-2274" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2274', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2275" 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-2240', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2241" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2241', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2242" class="py-name"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2275', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2276" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2276', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2277" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2242', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-2243" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2243', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2244" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2277', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-2278" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2278', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2279" 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-2244', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2192"></a><tt class="py-lineno">2192</tt>  <tt class="py-line">        <tt id="link-2245" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2245', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2246" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2246', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2247" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2247', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c2[2]'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2193"></a><tt class="py-lineno">2193</tt>  <tt class="py-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-2248" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2248', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2249" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2279', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2236"></a><tt class="py-lineno">2236</tt>  <tt class="py-line">        <tt id="link-2280" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2280', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2281" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2281', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2282" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2282', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c2[2]'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2237"></a><tt class="py-lineno">2237</tt>  <tt class="py-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-2283" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2283', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2284" 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-2249', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2250" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2250', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2251" class="py-name"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2284', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2285" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2285', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2286" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2251', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-2252" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2252', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2253" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2286', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-2287" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2287', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2288" 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-2253', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2194"></a><tt class="py-lineno">2194</tt>  <tt class="py-line">        <tt id="link-2254" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2254', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2255" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2255', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2256" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2256', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'{otherNS}c2'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2195"></a><tt class="py-lineno">2195</tt>  <tt class="py-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">getattr</tt><tt class="py-op">(</tt><tt id="link-2257" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2257', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">,</tt> <tt class="py-string">'{otherNS}c2'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2258" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2288', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2238"></a><tt class="py-lineno">2238</tt>  <tt class="py-line">        <tt id="link-2289" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2289', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2290" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2290', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2291" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2291', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-string">'root'</tt><tt class="py-op">,</tt> <tt class="py-string">'c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'{otherNS}c2'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2239"></a><tt class="py-lineno">2239</tt>  <tt class="py-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">getattr</tt><tt class="py-op">(</tt><tt id="link-2292" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2292', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">,</tt> <tt class="py-string">'{otherNS}c2'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2293" 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-2258', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2196"></a><tt class="py-lineno">2196</tt>  <tt class="py-line">                          <tt id="link-2259" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2259', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2260" class="py-name"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2293', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2240"></a><tt class="py-lineno">2240</tt>  <tt class="py-line">                          <tt id="link-2294" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2294', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2295" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2260', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-2261" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2261', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2262" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2295', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-2296" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2296', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2297" 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-2262', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2197"></a><tt class="py-lineno">2197</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_set"></a><div id="ObjectifyTestCase.test_object_path_set-def"><a name="L2198"></a><tt class="py-lineno">2198</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_set-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_set');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set">test_object_path_set</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="ObjectifyTestCase.test_object_path_set-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_set-expanded"><a name="L2199"></a><tt class="py-lineno">2199</tt>  <tt class="py-line">        <tt id="link-2263" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2263', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2264" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2297', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2241"></a><tt class="py-lineno">2241</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_set"></a><div id="ObjectifyTestCase.test_object_path_set-def"><a name="L2242"></a><tt class="py-lineno">2242</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_set-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_set');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set">test_object_path_set</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="ObjectifyTestCase.test_object_path_set-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_set-expanded"><a name="L2243"></a><tt class="py-lineno">2243</tt>  <tt class="py-line">        <tt id="link-2298" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2298', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2299" 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-2264', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2265" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2299', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2300" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2265', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2200"></a><tt class="py-lineno">2200</tt>  <tt class="py-line">        <tt id="link-2266" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2266', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2267" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2267', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2268" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2268', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2201"></a><tt class="py-lineno">2201</tt>  <tt class="py-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-2269" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2269', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2270" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2300', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2244"></a><tt class="py-lineno">2244</tt>  <tt class="py-line">        <tt id="link-2301" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2301', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2302" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2302', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2303" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2303', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2245"></a><tt class="py-lineno">2245</tt>  <tt class="py-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-2304" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2304', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2305" 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-2270', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2271" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2271', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2272" class="py-name"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2305', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2306" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2306', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2307" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2272', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-2273" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2273', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2274" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2307', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-2308" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2308', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2309" 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-2274', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2202"></a><tt class="py-lineno">2202</tt>  <tt class="py-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">"1"</tt><tt class="py-op">,</tt> <tt id="link-2275" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2275', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2276" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2309', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2246"></a><tt class="py-lineno">2246</tt>  <tt class="py-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">"1"</tt><tt class="py-op">,</tt> <tt id="link-2310" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2310', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2311" 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-2276', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2203"></a><tt class="py-lineno">2203</tt>  <tt class="py-line"> </tt>
-<a name="L2204"></a><tt class="py-lineno">2204</tt>  <tt class="py-line">        <tt class="py-name">new_value</tt> <tt class="py-op">=</tt> <tt class="py-string">"my new value"</tt> </tt>
-<a name="L2205"></a><tt class="py-lineno">2205</tt>  <tt class="py-line">        <tt id="link-2277" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2277', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2278" class="py-name"><a title="lxml.objectify.ObjectPath.setattr" class="py-name" href="#" onclick="return doclink('link-2278', 'setattr', 'link-501');">setattr</a></tt><tt class="py-op">(</tt><tt id="link-2279" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2279', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">new_value</tt><tt class="py-op">)</tt> </tt>
-<a name="L2206"></a><tt class="py-lineno">2206</tt>  <tt class="py-line"> </tt>
-<a name="L2207"></a><tt class="py-lineno">2207</tt>  <tt class="py-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">new_value</tt><tt class="py-op">,</tt> <tt id="link-2280" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2280', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2281" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2311', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2247"></a><tt class="py-lineno">2247</tt>  <tt class="py-line"> </tt>
+<a name="L2248"></a><tt class="py-lineno">2248</tt>  <tt class="py-line">        <tt class="py-name">new_value</tt> <tt class="py-op">=</tt> <tt class="py-string">"my new value"</tt> </tt>
+<a name="L2249"></a><tt class="py-lineno">2249</tt>  <tt class="py-line">        <tt id="link-2312" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2312', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2313" class="py-name"><a title="lxml.objectify.ObjectPath.setattr" class="py-name" href="#" onclick="return doclink('link-2313', 'setattr', 'link-501');">setattr</a></tt><tt class="py-op">(</tt><tt id="link-2314" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2314', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">new_value</tt><tt class="py-op">)</tt> </tt>
+<a name="L2250"></a><tt class="py-lineno">2250</tt>  <tt class="py-line"> </tt>
+<a name="L2251"></a><tt class="py-lineno">2251</tt>  <tt class="py-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">new_value</tt><tt class="py-op">,</tt> <tt id="link-2315" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2315', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2316" 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-2281', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2208"></a><tt class="py-lineno">2208</tt>  <tt class="py-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">new_value</tt><tt class="py-op">,</tt> <tt id="link-2282" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2282', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2283" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2283', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2284" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2316', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2252"></a><tt class="py-lineno">2252</tt>  <tt class="py-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">new_value</tt><tt class="py-op">,</tt> <tt id="link-2317" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2317', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2318" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2318', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2319" 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-2284', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2209"></a><tt class="py-lineno">2209</tt>  <tt class="py-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">"1"</tt><tt class="py-op">,</tt> <tt id="link-2285" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2285', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2286" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2319', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2253"></a><tt class="py-lineno">2253</tt>  <tt class="py-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">"1"</tt><tt class="py-op">,</tt> <tt id="link-2320" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2320', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2321" 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-2286', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2210"></a><tt class="py-lineno">2210</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_set_element"></a><div id="ObjectifyTestCase.test_object_path_set_element-def"><a name="L2211"></a><tt class="py-lineno">2211</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_set_element-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_set_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_element">test_object_path_set_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="ObjectifyTestCase.test_object_path_set_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_set_element-expanded"><a name="L2212"></a><tt class="py-lineno">2212</tt>  <tt class="py-line">        <tt id="link-2287" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2287', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2288" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2321', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2254"></a><tt class="py-lineno">2254</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_set_element"></a><div id="ObjectifyTestCase.test_object_path_set_element-def"><a name="L2255"></a><tt class="py-lineno">2255</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_set_element-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_set_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_element">test_object_path_set_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="ObjectifyTestCase.test_object_path_set_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_set_element-expanded"><a name="L2256"></a><tt class="py-lineno">2256</tt>  <tt class="py-line">        <tt id="link-2322" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2322', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2323" 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-2288', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2289" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2323', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2324" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2289', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2213"></a><tt class="py-lineno">2213</tt>  <tt class="py-line">        <tt id="link-2290" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2290', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2291" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2291', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2292" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2292', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2214"></a><tt class="py-lineno">2214</tt>  <tt class="py-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-2293" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2293', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2294" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2324', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2257"></a><tt class="py-lineno">2257</tt>  <tt class="py-line">        <tt id="link-2325" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2325', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2326" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2326', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2327" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2327', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2258"></a><tt class="py-lineno">2258</tt>  <tt class="py-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-2328" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2328', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2329" 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-2294', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2295" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2295', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2296" class="py-name"><a title="lxml.etree._Element.find
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2329', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2330" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2330', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2331" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2296', 'find', 'link-1831');">find</a></tt><tt class="py-op">(</tt><tt id="link-2297" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2297', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2298" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2331', 'find', 'link-1866');">find</a></tt><tt class="py-op">(</tt><tt id="link-2332" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2332', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2333" 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-2298', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2215"></a><tt class="py-lineno">2215</tt>  <tt class="py-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">"1"</tt><tt class="py-op">,</tt> <tt id="link-2299" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2299', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2300" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2333', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2259"></a><tt class="py-lineno">2259</tt>  <tt class="py-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">"1"</tt><tt class="py-op">,</tt> <tt id="link-2334" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2334', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2335" 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-2300', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2216"></a><tt class="py-lineno">2216</tt>  <tt class="py-line"> </tt>
-<a name="L2217"></a><tt class="py-lineno">2217</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2301" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2335', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2260"></a><tt class="py-lineno">2260</tt>  <tt class="py-line"> </tt>
+<a name="L2261"></a><tt class="py-lineno">2261</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2336" 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-2301', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}test"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2218"></a><tt class="py-lineno">2218</tt>  <tt class="py-line">        <tt id="link-2302" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2336', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}test"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2262"></a><tt class="py-lineno">2262</tt>  <tt class="py-line">        <tt id="link-2337" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2302', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2303" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2303', 'SubElement', 'link-545');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">new_el</tt><tt class="py-op">,</tt> <tt class="py-string">"{objectified}sub"</tt><tt class="py-op">,</tt> <tt class="py-name">myattr</tt><tt class="py-op">=</tt><tt class="py-string">"ATTR"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-string">"TEST"</tt> </tt>
-<a name="L2219"></a><tt class="py-lineno">2219</tt>  <tt class="py-line">        <tt id="link-2304" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2304', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2305" class="py-name"><a title="lxml.objectify.ObjectPath.setattr" class="py-name" href="#" onclick="return doclink('link-2305', 'setattr', 'link-501');">setattr</a></tt><tt class="py-op">(</tt><tt id="link-2306" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2306', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">)</tt> </tt>
-<a name="L2220"></a><tt class="py-lineno">2220</tt>  <tt class="py-line"> </tt>
-<a name="L2221"></a><tt class="py-lineno">2221</tt>  <tt class="py-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">"ATTR"</tt><tt class="py-op">,</tt> <tt id="link-2307" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2307', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2308" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2337', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2338" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2338', 'SubElement', 'link-545');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">new_el</tt><tt class="py-op">,</tt> <tt class="py-string">"{objectified}sub"</tt><tt class="py-op">,</tt> <tt class="py-name">myattr</tt><tt class="py-op">=</tt><tt class="py-string">"ATTR"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-string">"TEST"</tt> </tt>
+<a name="L2263"></a><tt class="py-lineno">2263</tt>  <tt class="py-line">        <tt id="link-2339" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2339', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2340" class="py-name"><a title="lxml.objectify.ObjectPath.setattr" class="py-name" href="#" onclick="return doclink('link-2340', 'setattr', 'link-501');">setattr</a></tt><tt class="py-op">(</tt><tt id="link-2341" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2341', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">)</tt> </tt>
+<a name="L2264"></a><tt class="py-lineno">2264</tt>  <tt class="py-line"> </tt>
+<a name="L2265"></a><tt class="py-lineno">2265</tt>  <tt class="py-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">"ATTR"</tt><tt class="py-op">,</tt> <tt id="link-2342" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2342', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt id="link-2343" 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-2308', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"myattr"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2222"></a><tt class="py-lineno">2222</tt>  <tt class="py-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-2309" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2309', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2310" class="py-name"><a title="lxml.etree.QName.text
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2343', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"myattr"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2266"></a><tt class="py-lineno">2266</tt>  <tt class="py-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-2344" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2344', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2345" 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-2310', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2223"></a><tt class="py-lineno">2223</tt>  <tt class="py-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-2311" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2311', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2312" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2312', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2313" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2345', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2267"></a><tt class="py-lineno">2267</tt>  <tt class="py-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-2346" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2346', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2347" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2347', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2348" 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-2313', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2224"></a><tt class="py-lineno">2224</tt>  <tt class="py-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">"1"</tt><tt class="py-op">,</tt> <tt id="link-2314" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2314', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2315" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2348', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2268"></a><tt class="py-lineno">2268</tt>  <tt class="py-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">"1"</tt><tt class="py-op">,</tt> <tt id="link-2349" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2349', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</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-2350" 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-2315', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2225"></a><tt class="py-lineno">2225</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_set_create"></a><div id="ObjectifyTestCase.test_object_path_set_create-def"><a name="L2226"></a><tt class="py-lineno">2226</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_set_create-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_set_create');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create">test_object_path_set_create</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="ObjectifyTestCase.test_object_path_set_create-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_set_create-expanded"><a name="L2227"></a><tt class="py-lineno">2227</tt>  <tt class="py-line">        <tt id="link-2316" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2316', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2317" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2350', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2269"></a><tt class="py-lineno">2269</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_set_create"></a><div id="ObjectifyTestCase.test_object_path_set_create-def"><a name="L2270"></a><tt class="py-lineno">2270</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_set_create-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_set_create');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create">test_object_path_set_create</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="ObjectifyTestCase.test_object_path_set_create-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_set_create-expanded"><a name="L2271"></a><tt class="py-lineno">2271</tt>  <tt class="py-line">        <tt id="link-2351" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2351', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2352" 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-2317', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2318" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2352', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2353" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2318', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2228"></a><tt class="py-lineno">2228</tt>  <tt class="py-line">        <tt id="link-2319" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2319', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2320" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2320', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2321" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2321', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2229"></a><tt class="py-lineno">2229</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2322" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2322', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2323" class="py-name"><a title="lxml.etree._Element.find
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2353', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2272"></a><tt class="py-lineno">2272</tt>  <tt class="py-line">        <tt id="link-2354" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2354', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2355" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2355', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2356" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2356', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2273"></a><tt class="py-lineno">2273</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2357" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2357', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2358" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2323', 'find', 'link-1831');">find</a></tt><tt class="py-op">,</tt> <tt id="link-2324" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2324', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2230"></a><tt class="py-lineno">2230</tt>  <tt class="py-line"> </tt>
-<a name="L2231"></a><tt class="py-lineno">2231</tt>  <tt class="py-line">        <tt class="py-name">new_value</tt> <tt class="py-op">=</tt> <tt class="py-string">"my new value"</tt> </tt>
-<a name="L2232"></a><tt class="py-lineno">2232</tt>  <tt class="py-line">        <tt id="link-2325" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2325', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2326" class="py-name"><a title="lxml.objectify.ObjectPath.setattr" class="py-name" href="#" onclick="return doclink('link-2326', 'setattr', 'link-501');">setattr</a></tt><tt class="py-op">(</tt><tt id="link-2327" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2327', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">new_value</tt><tt class="py-op">)</tt> </tt>
-<a name="L2233"></a><tt class="py-lineno">2233</tt>  <tt class="py-line"> </tt>
-<a name="L2234"></a><tt class="py-lineno">2234</tt>  <tt class="py-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-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2328" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2328', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2235"></a><tt class="py-lineno">2235</tt>  <tt class="py-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">new_value</tt><tt class="py-op">,</tt> <tt id="link-2329" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2329', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">.</tt><tt id="link-2330" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2358', 'find', 'link-1866');">find</a></tt><tt class="py-op">,</tt> <tt id="link-2359" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2359', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2274"></a><tt class="py-lineno">2274</tt>  <tt class="py-line"> </tt>
+<a name="L2275"></a><tt class="py-lineno">2275</tt>  <tt class="py-line">        <tt class="py-name">new_value</tt> <tt class="py-op">=</tt> <tt class="py-string">"my new value"</tt> </tt>
+<a name="L2276"></a><tt class="py-lineno">2276</tt>  <tt class="py-line">        <tt id="link-2360" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2360', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2361" class="py-name"><a title="lxml.objectify.ObjectPath.setattr" class="py-name" href="#" onclick="return doclink('link-2361', 'setattr', 'link-501');">setattr</a></tt><tt class="py-op">(</tt><tt id="link-2362" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2362', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">new_value</tt><tt class="py-op">)</tt> </tt>
+<a name="L2277"></a><tt class="py-lineno">2277</tt>  <tt class="py-line"> </tt>
+<a name="L2278"></a><tt class="py-lineno">2278</tt>  <tt class="py-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-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2363" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2363', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2279"></a><tt class="py-lineno">2279</tt>  <tt class="py-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">new_value</tt><tt class="py-op">,</tt> <tt id="link-2364" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2364', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">.</tt><tt id="link-2365" 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-2330', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2236"></a><tt class="py-lineno">2236</tt>  <tt class="py-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">new_value</tt><tt class="py-op">,</tt> <tt id="link-2331" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2331', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2332" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2332', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2333" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2365', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2280"></a><tt class="py-lineno">2280</tt>  <tt class="py-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">new_value</tt><tt class="py-op">,</tt> <tt id="link-2366" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2366', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2367" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2367', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2368" 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-2333', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2237"></a><tt class="py-lineno">2237</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_set_create_element"></a><div id="ObjectifyTestCase.test_object_path_set_create_element-def"><a name="L2238"></a><tt class="py-lineno">2238</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_set_create_element-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_set_create_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create_element">test_object_path_set_create_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="ObjectifyTestCase.test_object_path_set_create_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_set_create_element-expanded"><a name="L2239"></a><tt class="py-lineno">2239</tt>  <tt class="py-line">        <tt id="link-2334" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2334', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2335" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2368', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2281"></a><tt class="py-lineno">2281</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_set_create_element"></a><div id="ObjectifyTestCase.test_object_path_set_create_element-def"><a name="L2282"></a><tt class="py-lineno">2282</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_set_create_element-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_set_create_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create_element">test_object_path_set_create_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="ObjectifyTestCase.test_object_path_set_create_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_set_create_element-expanded"><a name="L2283"></a><tt class="py-lineno">2283</tt>  <tt class="py-line">        <tt id="link-2369" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2369', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2370" 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-2335', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2336" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2370', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2371" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2336', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2240"></a><tt class="py-lineno">2240</tt>  <tt class="py-line">        <tt id="link-2337" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2337', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2338" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2338', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2339" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2339', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2241"></a><tt class="py-lineno">2241</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2340" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2340', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2341" class="py-name"><a title="lxml.etree._Element.find
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2371', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2284"></a><tt class="py-lineno">2284</tt>  <tt class="py-line">        <tt id="link-2372" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2372', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2373" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2373', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2374" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2374', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2285"></a><tt class="py-lineno">2285</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2375" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2375', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2376" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2341', 'find', 'link-1831');">find</a></tt><tt class="py-op">,</tt> <tt id="link-2342" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2342', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2242"></a><tt class="py-lineno">2242</tt>  <tt class="py-line"> </tt>
-<a name="L2243"></a><tt class="py-lineno">2243</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2343" class="py-name"><a title="lxml.etree.Element
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2376', 'find', 'link-1866');">find</a></tt><tt class="py-op">,</tt> <tt id="link-2377" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2377', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2286"></a><tt class="py-lineno">2286</tt>  <tt class="py-line"> </tt>
+<a name="L2287"></a><tt class="py-lineno">2287</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2378" 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-2343', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}test"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2244"></a><tt class="py-lineno">2244</tt>  <tt class="py-line">        <tt id="link-2344" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2378', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}test"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2288"></a><tt class="py-lineno">2288</tt>  <tt class="py-line">        <tt id="link-2379" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2344', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2345" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2345', 'SubElement', 'link-545');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">new_el</tt><tt class="py-op">,</tt> <tt class="py-string">"{objectified}sub"</tt><tt class="py-op">,</tt> <tt class="py-name">myattr</tt><tt class="py-op">=</tt><tt class="py-string">"ATTR"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-string">"TEST"</tt> </tt>
-<a name="L2245"></a><tt class="py-lineno">2245</tt>  <tt class="py-line">        <tt id="link-2346" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2346', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2347" class="py-name"><a title="lxml.objectify.ObjectPath.setattr" class="py-name" href="#" onclick="return doclink('link-2347', 'setattr', 'link-501');">setattr</a></tt><tt class="py-op">(</tt><tt id="link-2348" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2348', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">)</tt> </tt>
-<a name="L2246"></a><tt class="py-lineno">2246</tt>  <tt class="py-line"> </tt>
-<a name="L2247"></a><tt class="py-lineno">2247</tt>  <tt class="py-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-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2349" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2349', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2248"></a><tt class="py-lineno">2248</tt>  <tt class="py-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">"ATTR"</tt><tt class="py-op">,</tt> <tt id="link-2350" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2350', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">.</tt><tt id="link-2351" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2379', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2380" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2380', 'SubElement', 'link-545');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">new_el</tt><tt class="py-op">,</tt> <tt class="py-string">"{objectified}sub"</tt><tt class="py-op">,</tt> <tt class="py-name">myattr</tt><tt class="py-op">=</tt><tt class="py-string">"ATTR"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-string">"TEST"</tt> </tt>
+<a name="L2289"></a><tt class="py-lineno">2289</tt>  <tt class="py-line">        <tt id="link-2381" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2381', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2382" class="py-name"><a title="lxml.objectify.ObjectPath.setattr" class="py-name" href="#" onclick="return doclink('link-2382', 'setattr', 'link-501');">setattr</a></tt><tt class="py-op">(</tt><tt id="link-2383" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2383', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">)</tt> </tt>
+<a name="L2290"></a><tt class="py-lineno">2290</tt>  <tt class="py-line"> </tt>
+<a name="L2291"></a><tt class="py-lineno">2291</tt>  <tt class="py-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-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2384" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2384', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2292"></a><tt class="py-lineno">2292</tt>  <tt class="py-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">"ATTR"</tt><tt class="py-op">,</tt> <tt id="link-2385" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2385', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">.</tt><tt id="link-2386" 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-2351', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"myattr"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2249"></a><tt class="py-lineno">2249</tt>  <tt class="py-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-2352" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2352', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2353" class="py-name"><a title="lxml.etree.QName.text
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2386', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"myattr"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2293"></a><tt class="py-lineno">2293</tt>  <tt class="py-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-2387" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2387', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2388" 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-2353', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2250"></a><tt class="py-lineno">2250</tt>  <tt class="py-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-2354" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2354', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2355" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2355', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2356" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2388', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2294"></a><tt class="py-lineno">2294</tt>  <tt class="py-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-2389" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2389', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2390" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2390', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2391" 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-2356', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2251"></a><tt class="py-lineno">2251</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_set_create_list"></a><div id="ObjectifyTestCase.test_object_path_set_create_list-def"><a name="L2252"></a><tt class="py-lineno">2252</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_set_create_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_set_create_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create_list">test_object_path_set_create_list</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="ObjectifyTestCase.test_object_path_set_create_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_set_create_list-expanded"><a name="L2253"></a><tt class="py-lineno">2253</tt>  <tt class="py-line">        <tt id="link-2357" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2357', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2358" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2391', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2295"></a><tt class="py-lineno">2295</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_set_create_list"></a><div id="ObjectifyTestCase.test_object_path_set_create_list-def"><a name="L2296"></a><tt class="py-lineno">2296</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_set_create_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_set_create_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create_list">test_object_path_set_create_list</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="ObjectifyTestCase.test_object_path_set_create_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_set_create_list-expanded"><a name="L2297"></a><tt class="py-lineno">2297</tt>  <tt class="py-line">        <tt id="link-2392" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2392', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2393" 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-2358', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2359" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2393', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2394" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2359', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2254"></a><tt class="py-lineno">2254</tt>  <tt class="py-line">        <tt id="link-2360" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2360', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2361" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2361', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2362" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2362', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2255"></a><tt class="py-lineno">2255</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2363" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2363', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2364" class="py-name"><a title="lxml.etree._Element.find
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2394', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2298"></a><tt class="py-lineno">2298</tt>  <tt class="py-line">        <tt id="link-2395" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2395', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2396" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2396', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2397" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2397', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2299"></a><tt class="py-lineno">2299</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2398" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2398', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2399" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2364', 'find', 'link-1831');">find</a></tt><tt class="py-op">,</tt> <tt id="link-2365" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2365', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2256"></a><tt class="py-lineno">2256</tt>  <tt class="py-line"> </tt>
-<a name="L2257"></a><tt class="py-lineno">2257</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2366" class="py-name"><a title="lxml.etree.Element
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2399', 'find', 'link-1866');">find</a></tt><tt class="py-op">,</tt> <tt id="link-2400" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2400', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2300"></a><tt class="py-lineno">2300</tt>  <tt class="py-line"> </tt>
+<a name="L2301"></a><tt class="py-lineno">2301</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2401" 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-2366', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}test"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2258"></a><tt class="py-lineno">2258</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">"TEST1"</tt><tt class="py-op">,</tt> <tt class="py-string">"TEST2"</tt><tt class="py-op">]</tt> </tt>
-<a name="L2259"></a><tt class="py-lineno">2259</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">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-2367" 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-2367', 'set', 'link-2367');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"myattr"</tt><tt class="py-op">,</tt> <tt class="py-string">"ATTR1"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2260"></a><tt class="py-lineno">2260</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">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-2368" class="py-name"><a title="lxml.etree._Element.set
-lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-2368', 'set', 'link-2367');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"myattr"</tt><tt class="py-op">,</tt> <tt class="py-string">"ATTR2"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2261"></a><tt class="py-lineno">2261</tt>  <tt class="py-line"> </tt>
-<a name="L2262"></a><tt class="py-lineno">2262</tt>  <tt class="py-line">        <tt id="link-2369" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2369', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2370" class="py-name"><a title="lxml.objectify.ObjectPath.setattr" class="py-name" href="#" onclick="return doclink('link-2370', 'setattr', 'link-501');">setattr</a></tt><tt class="py-op">(</tt><tt id="link-2371" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2371', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2263"></a><tt class="py-lineno">2263</tt>  <tt class="py-line"> </tt>
-<a name="L2264"></a><tt class="py-lineno">2264</tt>  <tt class="py-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-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2372" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2372', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2265"></a><tt class="py-lineno">2265</tt>  <tt class="py-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">"ATTR1"</tt><tt class="py-op">,</tt> <tt id="link-2373" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2373', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</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-2374" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2401', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}test"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2302"></a><tt class="py-lineno">2302</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">"TEST1"</tt><tt class="py-op">,</tt> <tt class="py-string">"TEST2"</tt><tt class="py-op">]</tt> </tt>
+<a name="L2303"></a><tt class="py-lineno">2303</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">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-2402" 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-2402', 'set', 'link-2402');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"myattr"</tt><tt class="py-op">,</tt> <tt class="py-string">"ATTR1"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2304"></a><tt class="py-lineno">2304</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">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-2403" class="py-name"><a title="lxml.etree._Element.set
+lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-2403', 'set', 'link-2402');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"myattr"</tt><tt class="py-op">,</tt> <tt class="py-string">"ATTR2"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2305"></a><tt class="py-lineno">2305</tt>  <tt class="py-line"> </tt>
+<a name="L2306"></a><tt class="py-lineno">2306</tt>  <tt class="py-line">        <tt id="link-2404" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2404', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2405" class="py-name"><a title="lxml.objectify.ObjectPath.setattr" class="py-name" href="#" onclick="return doclink('link-2405', 'setattr', 'link-501');">setattr</a></tt><tt class="py-op">(</tt><tt id="link-2406" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2406', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2307"></a><tt class="py-lineno">2307</tt>  <tt class="py-line"> </tt>
+<a name="L2308"></a><tt class="py-lineno">2308</tt>  <tt class="py-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-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2407" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2407', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2309"></a><tt class="py-lineno">2309</tt>  <tt class="py-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">"ATTR1"</tt><tt class="py-op">,</tt> <tt id="link-2408" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2408', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</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-2409" 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-2374', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"myattr"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2266"></a><tt class="py-lineno">2266</tt>  <tt class="py-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">"TEST1"</tt><tt class="py-op">,</tt> <tt id="link-2375" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2375', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</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-2376" class="py-name"><a title="lxml.etree.QName.text
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2409', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"myattr"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2310"></a><tt class="py-lineno">2310</tt>  <tt class="py-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">"TEST1"</tt><tt class="py-op">,</tt> <tt id="link-2410" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2410', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</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-2411" 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-2376', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2267"></a><tt class="py-lineno">2267</tt>  <tt class="py-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">"ATTR2"</tt><tt class="py-op">,</tt> <tt id="link-2377" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2377', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</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-2378" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2411', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2311"></a><tt class="py-lineno">2311</tt>  <tt class="py-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">"ATTR2"</tt><tt class="py-op">,</tt> <tt id="link-2412" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2412', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</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-2413" 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-2378', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"myattr"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2268"></a><tt class="py-lineno">2268</tt>  <tt class="py-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">"TEST2"</tt><tt class="py-op">,</tt> <tt id="link-2379" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2379', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</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-2380" class="py-name"><a title="lxml.etree.QName.text
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2413', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"myattr"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2312"></a><tt class="py-lineno">2312</tt>  <tt class="py-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">"TEST2"</tt><tt class="py-op">,</tt> <tt id="link-2414" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2414', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</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-2415" 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-2380', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2269"></a><tt class="py-lineno">2269</tt>  <tt class="py-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">"TEST1"</tt><tt class="py-op">,</tt> <tt id="link-2381" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2381', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2382" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2382', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2383" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2415', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2313"></a><tt class="py-lineno">2313</tt>  <tt class="py-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">"TEST1"</tt><tt class="py-op">,</tt> <tt id="link-2416" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2416', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2417" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2417', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2418" 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-2383', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2270"></a><tt class="py-lineno">2270</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_addattr"></a><div id="ObjectifyTestCase.test_object_path_addattr-def"><a name="L2271"></a><tt class="py-lineno">2271</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_addattr-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_addattr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr">test_object_path_addattr</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="ObjectifyTestCase.test_object_path_addattr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_addattr-expanded"><a name="L2272"></a><tt class="py-lineno">2272</tt>  <tt class="py-line">        <tt id="link-2384" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2384', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2385" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2418', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2314"></a><tt class="py-lineno">2314</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_addattr"></a><div id="ObjectifyTestCase.test_object_path_addattr-def"><a name="L2315"></a><tt class="py-lineno">2315</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_addattr-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_addattr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr">test_object_path_addattr</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="ObjectifyTestCase.test_object_path_addattr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_addattr-expanded"><a name="L2316"></a><tt class="py-lineno">2316</tt>  <tt class="py-line">        <tt id="link-2419" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2419', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2420" 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-2385', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2386" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2420', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2421" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2386', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2273"></a><tt class="py-lineno">2273</tt>  <tt class="py-line">        <tt id="link-2387" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2387', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2388" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2388', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2389" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2389', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2274"></a><tt class="py-lineno">2274</tt>  <tt class="py-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-number">3</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2390" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2390', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2275"></a><tt class="py-lineno">2275</tt>  <tt class="py-line">        <tt id="link-2391" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2391', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2392" class="py-name"><a title="lxml.objectify.ObjectPath.addattr
-lxml.objectify.ObjectifiedElement.addattr" class="py-name" href="#" onclick="return doclink('link-2392', 'addattr', 'link-523');">addattr</a></tt><tt class="py-op">(</tt><tt id="link-2393" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2393', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-string">"test"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2276"></a><tt class="py-lineno">2276</tt>  <tt class="py-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-number">4</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2394" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2394', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2277"></a><tt class="py-lineno">2277</tt>  <tt class="py-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-op">[</tt><tt class="py-string">"0"</tt><tt class="py-op">,</tt> <tt class="py-string">"1"</tt><tt class="py-op">,</tt> <tt class="py-string">"2"</tt><tt class="py-op">,</tt> <tt class="py-string">"test"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2278"></a><tt class="py-lineno">2278</tt>  <tt class="py-line">                          <tt class="py-op">[</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-2395" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2421', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2317"></a><tt class="py-lineno">2317</tt>  <tt class="py-line">        <tt id="link-2422" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2422', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2423" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2423', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2424" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2424', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2318"></a><tt class="py-lineno">2318</tt>  <tt class="py-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-number">3</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2425" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2425', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2319"></a><tt class="py-lineno">2319</tt>  <tt class="py-line">        <tt id="link-2426" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2426', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2427" class="py-name"><a title="lxml.objectify.ObjectPath.addattr
+lxml.objectify.ObjectifiedElement.addattr" class="py-name" href="#" onclick="return doclink('link-2427', 'addattr', 'link-523');">addattr</a></tt><tt class="py-op">(</tt><tt id="link-2428" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2428', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-string">"test"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2320"></a><tt class="py-lineno">2320</tt>  <tt class="py-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-number">4</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2429" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2429', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2321"></a><tt class="py-lineno">2321</tt>  <tt class="py-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-op">[</tt><tt class="py-string">"0"</tt><tt class="py-op">,</tt> <tt class="py-string">"1"</tt><tt class="py-op">,</tt> <tt class="py-string">"2"</tt><tt class="py-op">,</tt> <tt class="py-string">"test"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2322"></a><tt class="py-lineno">2322</tt>  <tt class="py-line">                          <tt class="py-op">[</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-2430" 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-2395', 'text', 'link-311');">text</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-2396" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2396', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2279"></a><tt class="py-lineno">2279</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_addattr_element"></a><div id="ObjectifyTestCase.test_object_path_addattr_element-def"><a name="L2280"></a><tt class="py-lineno">2280</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_addattr_element-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_addattr_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_element">test_object_path_addattr_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="ObjectifyTestCase.test_object_path_addattr_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_addattr_element-expanded"><a name="L2281"></a><tt class="py-lineno">2281</tt>  <tt class="py-line">        <tt id="link-2397" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2397', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2398" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2430', 'text', 'link-311');">text</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-2431" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2431', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2323"></a><tt class="py-lineno">2323</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_addattr_element"></a><div id="ObjectifyTestCase.test_object_path_addattr_element-def"><a name="L2324"></a><tt class="py-lineno">2324</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_addattr_element-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_addattr_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_element">test_object_path_addattr_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="ObjectifyTestCase.test_object_path_addattr_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_addattr_element-expanded"><a name="L2325"></a><tt class="py-lineno">2325</tt>  <tt class="py-line">        <tt id="link-2432" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2432', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2433" 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-2398', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2399" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2433', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2434" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2399', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2282"></a><tt class="py-lineno">2282</tt>  <tt class="py-line">        <tt id="link-2400" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2400', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2401" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2401', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2402" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2402', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2283"></a><tt class="py-lineno">2283</tt>  <tt class="py-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-number">3</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2403" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2403', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2284"></a><tt class="py-lineno">2284</tt>  <tt class="py-line"> </tt>
-<a name="L2285"></a><tt class="py-lineno">2285</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2404" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2434', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2326"></a><tt class="py-lineno">2326</tt>  <tt class="py-line">        <tt id="link-2435" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2435', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2436" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2436', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2437" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2437', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c2"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2327"></a><tt class="py-lineno">2327</tt>  <tt class="py-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-number">3</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2438" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2438', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2328"></a><tt class="py-lineno">2328</tt>  <tt class="py-line"> </tt>
+<a name="L2329"></a><tt class="py-lineno">2329</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2439" 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-2404', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}test"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2286"></a><tt class="py-lineno">2286</tt>  <tt class="py-line">        <tt id="link-2405" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2439', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}test"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2330"></a><tt class="py-lineno">2330</tt>  <tt class="py-line">        <tt id="link-2440" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2405', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2406" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2406', 'SubElement', 'link-545');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">new_el</tt><tt class="py-op">,</tt> <tt class="py-string">"{objectified}sub"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-string">"TEST"</tt> </tt>
-<a name="L2287"></a><tt class="py-lineno">2287</tt>  <tt class="py-line"> </tt>
-<a name="L2288"></a><tt class="py-lineno">2288</tt>  <tt class="py-line">        <tt id="link-2407" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2407', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2408" class="py-name"><a title="lxml.objectify.ObjectPath.addattr
-lxml.objectify.ObjectifiedElement.addattr" class="py-name" href="#" onclick="return doclink('link-2408', 'addattr', 'link-523');">addattr</a></tt><tt class="py-op">(</tt><tt id="link-2409" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2409', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">)</tt> </tt>
-<a name="L2289"></a><tt class="py-lineno">2289</tt>  <tt class="py-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-number">4</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2410" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2410', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2290"></a><tt class="py-lineno">2290</tt>  <tt class="py-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-2411" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2411', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2412" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2440', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2441" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2441', 'SubElement', 'link-545');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">new_el</tt><tt class="py-op">,</tt> <tt class="py-string">"{objectified}sub"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-string">"TEST"</tt> </tt>
+<a name="L2331"></a><tt class="py-lineno">2331</tt>  <tt class="py-line"> </tt>
+<a name="L2332"></a><tt class="py-lineno">2332</tt>  <tt class="py-line">        <tt id="link-2442" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2442', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2443" class="py-name"><a title="lxml.objectify.ObjectPath.addattr
+lxml.objectify.ObjectifiedElement.addattr" class="py-name" href="#" onclick="return doclink('link-2443', 'addattr', 'link-523');">addattr</a></tt><tt class="py-op">(</tt><tt id="link-2444" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2444', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">)</tt> </tt>
+<a name="L2333"></a><tt class="py-lineno">2333</tt>  <tt class="py-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-number">4</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2445" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2445', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2334"></a><tt class="py-lineno">2334</tt>  <tt class="py-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-2446" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2446', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2447" 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-2412', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2291"></a><tt class="py-lineno">2291</tt>  <tt class="py-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-op">[</tt><tt class="py-string">"0"</tt><tt class="py-op">,</tt> <tt class="py-string">"1"</tt><tt class="py-op">,</tt> <tt class="py-string">"2"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2292"></a><tt class="py-lineno">2292</tt>  <tt class="py-line">                          <tt class="py-op">[</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-2413" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2447', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2335"></a><tt class="py-lineno">2335</tt>  <tt class="py-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-op">[</tt><tt class="py-string">"0"</tt><tt class="py-op">,</tt> <tt class="py-string">"1"</tt><tt class="py-op">,</tt> <tt class="py-string">"2"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2336"></a><tt class="py-lineno">2336</tt>  <tt class="py-line">                          <tt class="py-op">[</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-2448" 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-2413', 'text', 'link-311');">text</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-2414" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2414', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2293"></a><tt class="py-lineno">2293</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_addattr_create"></a><div id="ObjectifyTestCase.test_object_path_addattr_create-def"><a name="L2294"></a><tt class="py-lineno">2294</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_addattr_create-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_addattr_create');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create">test_object_path_addattr_create</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="ObjectifyTestCase.test_object_path_addattr_create-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_addattr_create-expanded"><a name="L2295"></a><tt class="py-lineno">2295</tt>  <tt class="py-line">        <tt id="link-2415" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2415', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2416" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2448', 'text', 'link-311');">text</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-2449" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2449', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c2</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2337"></a><tt class="py-lineno">2337</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_addattr_create"></a><div id="ObjectifyTestCase.test_object_path_addattr_create-def"><a name="L2338"></a><tt class="py-lineno">2338</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_addattr_create-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_addattr_create');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create">test_object_path_addattr_create</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="ObjectifyTestCase.test_object_path_addattr_create-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_addattr_create-expanded"><a name="L2339"></a><tt class="py-lineno">2339</tt>  <tt class="py-line">        <tt id="link-2450" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2450', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2451" 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-2416', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2417" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2451', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2452" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2417', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2296"></a><tt class="py-lineno">2296</tt>  <tt class="py-line">        <tt id="link-2418" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2418', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2419" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2419', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2420" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2420', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2297"></a><tt class="py-lineno">2297</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2421" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2421', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2422" class="py-name"><a title="lxml.etree._Element.find
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2452', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2340"></a><tt class="py-lineno">2340</tt>  <tt class="py-line">        <tt id="link-2453" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2453', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2454" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2454', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2455" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2455', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2341"></a><tt class="py-lineno">2341</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2456" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2456', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2457" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2422', 'find', 'link-1831');">find</a></tt><tt class="py-op">,</tt> <tt id="link-2423" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2423', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2298"></a><tt class="py-lineno">2298</tt>  <tt class="py-line"> </tt>
-<a name="L2299"></a><tt class="py-lineno">2299</tt>  <tt class="py-line">        <tt class="py-name">new_value</tt> <tt class="py-op">=</tt> <tt class="py-string">"my new value"</tt> </tt>
-<a name="L2300"></a><tt class="py-lineno">2300</tt>  <tt class="py-line">        <tt id="link-2424" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2424', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2425" class="py-name"><a title="lxml.objectify.ObjectPath.addattr
-lxml.objectify.ObjectifiedElement.addattr" class="py-name" href="#" onclick="return doclink('link-2425', 'addattr', 'link-523');">addattr</a></tt><tt class="py-op">(</tt><tt id="link-2426" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2426', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">new_value</tt><tt class="py-op">)</tt> </tt>
-<a name="L2301"></a><tt class="py-lineno">2301</tt>  <tt class="py-line"> </tt>
-<a name="L2302"></a><tt class="py-lineno">2302</tt>  <tt class="py-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-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2427" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2427', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2303"></a><tt class="py-lineno">2303</tt>  <tt class="py-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">new_value</tt><tt class="py-op">,</tt> <tt id="link-2428" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2428', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">.</tt><tt id="link-2429" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2457', 'find', 'link-1866');">find</a></tt><tt class="py-op">,</tt> <tt id="link-2458" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2458', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2342"></a><tt class="py-lineno">2342</tt>  <tt class="py-line"> </tt>
+<a name="L2343"></a><tt class="py-lineno">2343</tt>  <tt class="py-line">        <tt class="py-name">new_value</tt> <tt class="py-op">=</tt> <tt class="py-string">"my new value"</tt> </tt>
+<a name="L2344"></a><tt class="py-lineno">2344</tt>  <tt class="py-line">        <tt id="link-2459" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2459', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2460" class="py-name"><a title="lxml.objectify.ObjectPath.addattr
+lxml.objectify.ObjectifiedElement.addattr" class="py-name" href="#" onclick="return doclink('link-2460', 'addattr', 'link-523');">addattr</a></tt><tt class="py-op">(</tt><tt id="link-2461" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2461', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">new_value</tt><tt class="py-op">)</tt> </tt>
+<a name="L2345"></a><tt class="py-lineno">2345</tt>  <tt class="py-line"> </tt>
+<a name="L2346"></a><tt class="py-lineno">2346</tt>  <tt class="py-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-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2462" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2462', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2347"></a><tt class="py-lineno">2347</tt>  <tt class="py-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">new_value</tt><tt class="py-op">,</tt> <tt id="link-2463" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2463', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">.</tt><tt id="link-2464" 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-2429', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2304"></a><tt class="py-lineno">2304</tt>  <tt class="py-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">new_value</tt><tt class="py-op">,</tt> <tt id="link-2430" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2430', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2431" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2431', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2432" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2464', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2348"></a><tt class="py-lineno">2348</tt>  <tt class="py-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">new_value</tt><tt class="py-op">,</tt> <tt id="link-2465" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2465', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2466" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2466', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2467" 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-2432', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2305"></a><tt class="py-lineno">2305</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_addattr_create_element"></a><div id="ObjectifyTestCase.test_object_path_addattr_create_element-def"><a name="L2306"></a><tt class="py-lineno">2306</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_addattr_create_element-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_addattr_create_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create_element">test_object_path_addattr_create_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="ObjectifyTestCase.test_object_path_addattr_create_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_addattr_create_element-expanded"><a name="L2307"></a><tt class="py-lineno">2307</tt>  <tt class="py-line">        <tt id="link-2433" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2433', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2434" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2467', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2349"></a><tt class="py-lineno">2349</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_addattr_create_element"></a><div id="ObjectifyTestCase.test_object_path_addattr_create_element-def"><a name="L2350"></a><tt class="py-lineno">2350</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_addattr_create_element-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_addattr_create_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create_element">test_object_path_addattr_create_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="ObjectifyTestCase.test_object_path_addattr_create_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_addattr_create_element-expanded"><a name="L2351"></a><tt class="py-lineno">2351</tt>  <tt class="py-line">        <tt id="link-2468" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2468', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2469" 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-2434', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2435" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2469', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2470" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2435', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2308"></a><tt class="py-lineno">2308</tt>  <tt class="py-line">        <tt id="link-2436" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2436', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2437" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2437', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2438" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2438', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2309"></a><tt class="py-lineno">2309</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2439" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2439', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2440" class="py-name"><a title="lxml.etree._Element.find
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2470', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2352"></a><tt class="py-lineno">2352</tt>  <tt class="py-line">        <tt id="link-2471" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2471', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2472" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2472', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2473" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2473', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2353"></a><tt class="py-lineno">2353</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2474" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2474', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2475" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2440', 'find', 'link-1831');">find</a></tt><tt class="py-op">,</tt> <tt id="link-2441" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2441', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2310"></a><tt class="py-lineno">2310</tt>  <tt class="py-line"> </tt>
-<a name="L2311"></a><tt class="py-lineno">2311</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2442" class="py-name"><a title="lxml.etree.Element
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2475', 'find', 'link-1866');">find</a></tt><tt class="py-op">,</tt> <tt id="link-2476" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2476', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2354"></a><tt class="py-lineno">2354</tt>  <tt class="py-line"> </tt>
+<a name="L2355"></a><tt class="py-lineno">2355</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2477" 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-2442', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}test"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2312"></a><tt class="py-lineno">2312</tt>  <tt class="py-line">        <tt id="link-2443" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2477', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}test"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2356"></a><tt class="py-lineno">2356</tt>  <tt class="py-line">        <tt id="link-2478" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2443', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2444" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2444', 'SubElement', 'link-545');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">new_el</tt><tt class="py-op">,</tt> <tt class="py-string">"{objectified}sub"</tt><tt class="py-op">,</tt> <tt class="py-name">myattr</tt><tt class="py-op">=</tt><tt class="py-string">"ATTR"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-string">"TEST"</tt> </tt>
-<a name="L2313"></a><tt class="py-lineno">2313</tt>  <tt class="py-line"> </tt>
-<a name="L2314"></a><tt class="py-lineno">2314</tt>  <tt class="py-line">        <tt id="link-2445" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2445', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2446" class="py-name"><a title="lxml.objectify.ObjectPath.addattr
-lxml.objectify.ObjectifiedElement.addattr" class="py-name" href="#" onclick="return doclink('link-2446', 'addattr', 'link-523');">addattr</a></tt><tt class="py-op">(</tt><tt id="link-2447" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2447', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">)</tt> </tt>
-<a name="L2315"></a><tt class="py-lineno">2315</tt>  <tt class="py-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-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2448" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2448', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2316"></a><tt class="py-lineno">2316</tt>  <tt class="py-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-2449" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2449', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2450" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2478', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2479" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2479', 'SubElement', 'link-545');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">new_el</tt><tt class="py-op">,</tt> <tt class="py-string">"{objectified}sub"</tt><tt class="py-op">,</tt> <tt class="py-name">myattr</tt><tt class="py-op">=</tt><tt class="py-string">"ATTR"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-string">"TEST"</tt> </tt>
+<a name="L2357"></a><tt class="py-lineno">2357</tt>  <tt class="py-line"> </tt>
+<a name="L2358"></a><tt class="py-lineno">2358</tt>  <tt class="py-line">        <tt id="link-2480" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2480', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2481" class="py-name"><a title="lxml.objectify.ObjectPath.addattr
+lxml.objectify.ObjectifiedElement.addattr" class="py-name" href="#" onclick="return doclink('link-2481', 'addattr', 'link-523');">addattr</a></tt><tt class="py-op">(</tt><tt id="link-2482" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2482', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">)</tt> </tt>
+<a name="L2359"></a><tt class="py-lineno">2359</tt>  <tt class="py-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-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2483" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2483', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2360"></a><tt class="py-lineno">2360</tt>  <tt class="py-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-2484" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2484', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2485" 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-2450', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2317"></a><tt class="py-lineno">2317</tt>  <tt class="py-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-2451" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2451', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2452" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2452', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2453" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2485', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2361"></a><tt class="py-lineno">2361</tt>  <tt class="py-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-2486" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2486', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2487" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2487', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2488" 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-2453', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2318"></a><tt class="py-lineno">2318</tt>  <tt class="py-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">"ATTR"</tt><tt class="py-op">,</tt> <tt id="link-2454" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2454', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">.</tt><tt id="link-2455" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2488', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2362"></a><tt class="py-lineno">2362</tt>  <tt class="py-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">"ATTR"</tt><tt class="py-op">,</tt> <tt id="link-2489" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2489', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">.</tt><tt id="link-2490" 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-2455', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"myattr"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2319"></a><tt class="py-lineno">2319</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_object_path_addattr_create_list"></a><div id="ObjectifyTestCase.test_object_path_addattr_create_list-def"><a name="L2320"></a><tt class="py-lineno">2320</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_addattr_create_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_addattr_create_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create_list">test_object_path_addattr_create_list</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="ObjectifyTestCase.test_object_path_addattr_create_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_addattr_create_list-expanded"><a name="L2321"></a><tt class="py-lineno">2321</tt>  <tt class="py-line">        <tt id="link-2456" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2456', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2457" class="py-name"><a title="lxml.etree.XML
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2490', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"myattr"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2363"></a><tt class="py-lineno">2363</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_object_path_addattr_create_list"></a><div id="ObjectifyTestCase.test_object_path_addattr_create_list-def"><a name="L2364"></a><tt class="py-lineno">2364</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_object_path_addattr_create_list-toggle" onclick="return toggle('ObjectifyTestCase.test_object_path_addattr_create_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create_list">test_object_path_addattr_create_list</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="ObjectifyTestCase.test_object_path_addattr_create_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_object_path_addattr_create_list-expanded"><a name="L2365"></a><tt class="py-lineno">2365</tt>  <tt class="py-line">        <tt id="link-2491" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2491', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2492" 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-2457', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2458" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2492', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2493" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2458', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2322"></a><tt class="py-lineno">2322</tt>  <tt class="py-line">        <tt id="link-2459" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2459', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2460" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2460', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2461" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2461', 'ObjectPath', 'link-1827');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
-<a name="L2323"></a><tt class="py-lineno">2323</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2462" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2462', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2463" class="py-name"><a title="lxml.etree._Element.find
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2493', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2366"></a><tt class="py-lineno">2366</tt>  <tt class="py-line">        <tt id="link-2494" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2494', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-2495" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2495', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2496" class="py-name"><a title="lxml.objectify.ObjectPath" class="py-name" href="#" onclick="return doclink('link-2496', 'ObjectPath', 'link-1862');">ObjectPath</a></tt><tt class="py-op">(</tt> <tt class="py-string">"root.c1.c99"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2367"></a><tt class="py-lineno">2367</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">AttributeError</tt><tt class="py-op">,</tt> <tt id="link-2497" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2497', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2498" class="py-name"><a title="lxml.etree._Element.find
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2463', 'find', 'link-1831');">find</a></tt><tt class="py-op">,</tt> <tt id="link-2464" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2464', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2324"></a><tt class="py-lineno">2324</tt>  <tt class="py-line"> </tt>
-<a name="L2325"></a><tt class="py-lineno">2325</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2465" class="py-name"><a title="lxml.etree.Element
+lxml.tests.selftest2.find" class="py-name" href="#" onclick="return doclink('link-2498', 'find', 'link-1866');">find</a></tt><tt class="py-op">,</tt> <tt id="link-2499" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2499', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2368"></a><tt class="py-lineno">2368</tt>  <tt class="py-line"> </tt>
+<a name="L2369"></a><tt class="py-lineno">2369</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2500" 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-2465', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}test"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2326"></a><tt class="py-lineno">2326</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">"TEST1"</tt><tt class="py-op">,</tt> <tt class="py-string">"TEST2"</tt><tt class="py-op">]</tt> </tt>
-<a name="L2327"></a><tt class="py-lineno">2327</tt>  <tt class="py-line"> </tt>
-<a name="L2328"></a><tt class="py-lineno">2328</tt>  <tt class="py-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-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2329"></a><tt class="py-lineno">2329</tt>  <tt class="py-line"> </tt>
-<a name="L2330"></a><tt class="py-lineno">2330</tt>  <tt class="py-line">        <tt id="link-2466" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2466', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2467" class="py-name"><a title="lxml.objectify.ObjectPath.addattr
-lxml.objectify.ObjectifiedElement.addattr" class="py-name" href="#" onclick="return doclink('link-2467', 'addattr', 'link-523');">addattr</a></tt><tt class="py-op">(</tt><tt id="link-2468" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2468', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2331"></a><tt class="py-lineno">2331</tt>  <tt class="py-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-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2469" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2469', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2332"></a><tt class="py-lineno">2332</tt>  <tt class="py-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">"TEST1"</tt><tt class="py-op">,</tt> <tt id="link-2470" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2470', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">.</tt><tt id="link-2471" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2500', 'Element', 'link-79');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"{objectified}test"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2370"></a><tt class="py-lineno">2370</tt>  <tt class="py-line">        <tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">"TEST1"</tt><tt class="py-op">,</tt> <tt class="py-string">"TEST2"</tt><tt class="py-op">]</tt> </tt>
+<a name="L2371"></a><tt class="py-lineno">2371</tt>  <tt class="py-line"> </tt>
+<a name="L2372"></a><tt class="py-lineno">2372</tt>  <tt class="py-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-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2373"></a><tt class="py-lineno">2373</tt>  <tt class="py-line"> </tt>
+<a name="L2374"></a><tt class="py-lineno">2374</tt>  <tt class="py-line">        <tt id="link-2501" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2501', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt id="link-2502" class="py-name"><a title="lxml.objectify.ObjectPath.addattr
+lxml.objectify.ObjectifiedElement.addattr" class="py-name" href="#" onclick="return doclink('link-2502', 'addattr', 'link-523');">addattr</a></tt><tt class="py-op">(</tt><tt id="link-2503" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2503', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">new_el</tt><tt class="py-op">.</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2375"></a><tt class="py-lineno">2375</tt>  <tt class="py-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-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2504" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2504', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2376"></a><tt class="py-lineno">2376</tt>  <tt class="py-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">"TEST1"</tt><tt class="py-op">,</tt> <tt id="link-2505" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2505', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt class="py-name">c99</tt><tt class="py-op">.</tt><tt id="link-2506" 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-2471', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2333"></a><tt class="py-lineno">2333</tt>  <tt class="py-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">"TEST2"</tt><tt class="py-op">,</tt> <tt id="link-2472" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2472', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2473" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2473', 'root', 'link-144');">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 class="py-op">.</tt><tt id="link-2474" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2506', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2377"></a><tt class="py-lineno">2377</tt>  <tt class="py-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">"TEST2"</tt><tt class="py-op">,</tt> <tt id="link-2507" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-2507', 'path', 'link-0');">path</a></tt><tt class="py-op">(</tt><tt id="link-2508" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2508', 'root', 'link-144');">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 class="py-op">.</tt><tt id="link-2509" 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-2474', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2334"></a><tt class="py-lineno">2334</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_descendant_paths"></a><div id="ObjectifyTestCase.test_descendant_paths-def"><a name="L2335"></a><tt class="py-lineno">2335</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_descendant_paths-toggle" onclick="return toggle('ObjectifyTestCase.test_descendant_paths');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths">test_descendant_paths</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="ObjectifyTestCase.test_descendant_paths-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_descendant_paths-expanded"><a name="L2336"></a><tt class="py-lineno">2336</tt>  <tt class="py-line">        <tt id="link-2475" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2475', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2476" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2509', 'text', 'link-311');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2378"></a><tt class="py-lineno">2378</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_descendant_paths"></a><div id="ObjectifyTestCase.test_descendant_paths-def"><a name="L2379"></a><tt class="py-lineno">2379</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_descendant_paths-toggle" onclick="return toggle('ObjectifyTestCase.test_descendant_paths');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths">test_descendant_paths</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="ObjectifyTestCase.test_descendant_paths-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_descendant_paths-expanded"><a name="L2380"></a><tt class="py-lineno">2380</tt>  <tt class="py-line">        <tt id="link-2510" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2510', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2511" 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-2476', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2477" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2511', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2512" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2477', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2337"></a><tt class="py-lineno">2337</tt>  <tt class="py-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="L2338"></a><tt class="py-lineno">2338</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">'{objectified}root'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}root.c1'</tt><tt class="py-op">,</tt> </tt>
-<a name="L2339"></a><tt class="py-lineno">2339</tt>  <tt class="py-line">             <tt class="py-string">'{objectified}root.c1.c2'</tt><tt class="py-op">,</tt> </tt>
-<a name="L2340"></a><tt class="py-lineno">2340</tt>  <tt class="py-line">             <tt class="py-string">'{objectified}root.c1.c2[1]'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}root.c1.c2[2]'</tt><tt class="py-op">,</tt> </tt>
-<a name="L2341"></a><tt class="py-lineno">2341</tt>  <tt class="py-line">             <tt class="py-string">'{objectified}root.c1.{otherNS}c2'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}root.c1.{}c2'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2342"></a><tt class="py-lineno">2342</tt>  <tt class="py-line">            <tt id="link-2478" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2478', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2479" class="py-name" targets="Method lxml.objectify.ObjectifiedElement.descendantpaths()=lxml.objectify.ObjectifiedElement-class.html#descendantpaths"><a title="lxml.objectify.ObjectifiedElement.descendantpaths" class="py-name" href="#" onclick="return doclink('link-2479', 'descendantpaths', 'link-2479');">descendantpaths</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2343"></a><tt class="py-lineno">2343</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_descendant_paths_child"></a><div id="ObjectifyTestCase.test_descendant_paths_child-def"><a name="L2344"></a><tt class="py-lineno">2344</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_descendant_paths_child-toggle" onclick="return toggle('ObjectifyTestCase.test_descendant_paths_child');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths_child">test_descendant_paths_child</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="ObjectifyTestCase.test_descendant_paths_child-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_descendant_paths_child-expanded"><a name="L2345"></a><tt class="py-lineno">2345</tt>  <tt class="py-line">        <tt id="link-2480" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2480', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2481" 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-2481', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2482" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2512', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2381"></a><tt class="py-lineno">2381</tt>  <tt class="py-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="L2382"></a><tt class="py-lineno">2382</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">'{objectified}root'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}root.c1'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2383"></a><tt class="py-lineno">2383</tt>  <tt class="py-line">             <tt class="py-string">'{objectified}root.c1.c2'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2384"></a><tt class="py-lineno">2384</tt>  <tt class="py-line">             <tt class="py-string">'{objectified}root.c1.c2[1]'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}root.c1.c2[2]'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2385"></a><tt class="py-lineno">2385</tt>  <tt class="py-line">             <tt class="py-string">'{objectified}root.c1.{otherNS}c2'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}root.c1.{}c2'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2386"></a><tt class="py-lineno">2386</tt>  <tt class="py-line">            <tt id="link-2513" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2513', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2514" class="py-name" targets="Method lxml.objectify.ObjectifiedElement.descendantpaths()=lxml.objectify.ObjectifiedElement-class.html#descendantpaths"><a title="lxml.objectify.ObjectifiedElement.descendantpaths" class="py-name" href="#" onclick="return doclink('link-2514', 'descendantpaths', 'link-2514');">descendantpaths</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2387"></a><tt class="py-lineno">2387</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_descendant_paths_child"></a><div id="ObjectifyTestCase.test_descendant_paths_child-def"><a name="L2388"></a><tt class="py-lineno">2388</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_descendant_paths_child-toggle" onclick="return toggle('ObjectifyTestCase.test_descendant_paths_child');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths_child">test_descendant_paths_child</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="ObjectifyTestCase.test_descendant_paths_child-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_descendant_paths_child-expanded"><a name="L2389"></a><tt class="py-lineno">2389</tt>  <tt class="py-line">        <tt id="link-2515" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2515', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2516" 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-2516', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2517" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2482', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2346"></a><tt class="py-lineno">2346</tt>  <tt class="py-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="L2347"></a><tt class="py-lineno">2347</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">'{objectified}c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c1.c2'</tt><tt class="py-op">,</tt> </tt>
-<a name="L2348"></a><tt class="py-lineno">2348</tt>  <tt class="py-line">             <tt class="py-string">'{objectified}c1.c2[1]'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c1.c2[2]'</tt><tt class="py-op">,</tt> </tt>
-<a name="L2349"></a><tt class="py-lineno">2349</tt>  <tt class="py-line">             <tt class="py-string">'{objectified}c1.{otherNS}c2'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c1.{}c2'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2350"></a><tt class="py-lineno">2350</tt>  <tt class="py-line">            <tt id="link-2483" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2483', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt id="link-2484" class="py-name"><a title="lxml.objectify.ObjectifiedElement.descendantpaths" class="py-name" href="#" onclick="return doclink('link-2484', 'descendantpaths', 'link-2479');">descendantpaths</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2351"></a><tt class="py-lineno">2351</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_descendant_paths_prefix"></a><div id="ObjectifyTestCase.test_descendant_paths_prefix-def"><a name="L2352"></a><tt class="py-lineno">2352</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_descendant_paths_prefix-toggle" onclick="return toggle('ObjectifyTestCase.test_descendant_paths_prefix');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths_prefix">test_descendant_paths_prefix</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="ObjectifyTestCase.test_descendant_paths_prefix-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_descendant_paths_prefix-expanded"><a name="L2353"></a><tt class="py-lineno">2353</tt>  <tt class="py-line">        <tt id="link-2485" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2485', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2486" 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-2486', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2487" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2517', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2390"></a><tt class="py-lineno">2390</tt>  <tt class="py-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="L2391"></a><tt class="py-lineno">2391</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">'{objectified}c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c1.c2'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2392"></a><tt class="py-lineno">2392</tt>  <tt class="py-line">             <tt class="py-string">'{objectified}c1.c2[1]'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c1.c2[2]'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2393"></a><tt class="py-lineno">2393</tt>  <tt class="py-line">             <tt class="py-string">'{objectified}c1.{otherNS}c2'</tt><tt class="py-op">,</tt> <tt class="py-string">'{objectified}c1.{}c2'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2394"></a><tt class="py-lineno">2394</tt>  <tt class="py-line">            <tt id="link-2518" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2518', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt id="link-2519" class="py-name"><a title="lxml.objectify.ObjectifiedElement.descendantpaths" class="py-name" href="#" onclick="return doclink('link-2519', 'descendantpaths', 'link-2514');">descendantpaths</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2395"></a><tt class="py-lineno">2395</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_descendant_paths_prefix"></a><div id="ObjectifyTestCase.test_descendant_paths_prefix-def"><a name="L2396"></a><tt class="py-lineno">2396</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_descendant_paths_prefix-toggle" onclick="return toggle('ObjectifyTestCase.test_descendant_paths_prefix');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths_prefix">test_descendant_paths_prefix</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="ObjectifyTestCase.test_descendant_paths_prefix-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_descendant_paths_prefix-expanded"><a name="L2397"></a><tt class="py-lineno">2397</tt>  <tt class="py-line">        <tt id="link-2520" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2520', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2521" 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-2521', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2522" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2487', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2354"></a><tt class="py-lineno">2354</tt>  <tt class="py-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="L2355"></a><tt class="py-lineno">2355</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">'root.{objectified}c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'root.{objectified}c1.c2'</tt><tt class="py-op">,</tt> </tt>
-<a name="L2356"></a><tt class="py-lineno">2356</tt>  <tt class="py-line">             <tt class="py-string">'root.{objectified}c1.c2[1]'</tt><tt class="py-op">,</tt> <tt class="py-string">'root.{objectified}c1.c2[2]'</tt><tt class="py-op">,</tt> </tt>
-<a name="L2357"></a><tt class="py-lineno">2357</tt>  <tt class="py-line">             <tt class="py-string">'root.{objectified}c1.{otherNS}c2'</tt><tt class="py-op">,</tt> </tt>
-<a name="L2358"></a><tt class="py-lineno">2358</tt>  <tt class="py-line">             <tt class="py-string">'root.{objectified}c1.{}c2'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2359"></a><tt class="py-lineno">2359</tt>  <tt class="py-line">            <tt id="link-2488" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2488', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt id="link-2489" class="py-name"><a title="lxml.objectify.ObjectifiedElement.descendantpaths" class="py-name" href="#" onclick="return doclink('link-2489', 'descendantpaths', 'link-2479');">descendantpaths</a></tt><tt class="py-op">(</tt><tt class="py-string">'root'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2360"></a><tt class="py-lineno">2360</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_pickle"></a><div id="ObjectifyTestCase.test_pickle-def"><a name="L2361"></a><tt class="py-lineno">2361</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pickle-toggle" onclick="return toggle('ObjectifyTestCase.test_pickle');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle">test_pickle</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="ObjectifyTestCase.test_pickle-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pickle-expanded"><a name="L2362"></a><tt class="py-lineno">2362</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt class="py-name">pickle</tt> </tt>
-<a name="L2363"></a><tt class="py-lineno">2363</tt>  <tt class="py-line"> </tt>
-<a name="L2364"></a><tt class="py-lineno">2364</tt>  <tt class="py-line">        <tt id="link-2490" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2490', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2491" 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-2491', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2492" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2522', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2398"></a><tt class="py-lineno">2398</tt>  <tt class="py-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="L2399"></a><tt class="py-lineno">2399</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">'root.{objectified}c1'</tt><tt class="py-op">,</tt> <tt class="py-string">'root.{objectified}c1.c2'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2400"></a><tt class="py-lineno">2400</tt>  <tt class="py-line">             <tt class="py-string">'root.{objectified}c1.c2[1]'</tt><tt class="py-op">,</tt> <tt class="py-string">'root.{objectified}c1.c2[2]'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2401"></a><tt class="py-lineno">2401</tt>  <tt class="py-line">             <tt class="py-string">'root.{objectified}c1.{otherNS}c2'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2402"></a><tt class="py-lineno">2402</tt>  <tt class="py-line">             <tt class="py-string">'root.{objectified}c1.{}c2'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2403"></a><tt class="py-lineno">2403</tt>  <tt class="py-line">            <tt id="link-2523" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2523', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">c1</tt><tt class="py-op">.</tt><tt id="link-2524" class="py-name"><a title="lxml.objectify.ObjectifiedElement.descendantpaths" class="py-name" href="#" onclick="return doclink('link-2524', 'descendantpaths', 'link-2514');">descendantpaths</a></tt><tt class="py-op">(</tt><tt class="py-string">'root'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2404"></a><tt class="py-lineno">2404</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_pickle"></a><div id="ObjectifyTestCase.test_pickle-def"><a name="L2405"></a><tt class="py-lineno">2405</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pickle-toggle" onclick="return toggle('ObjectifyTestCase.test_pickle');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle">test_pickle</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="ObjectifyTestCase.test_pickle-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pickle-expanded"><a name="L2406"></a><tt class="py-lineno">2406</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt class="py-name">pickle</tt> </tt>
+<a name="L2407"></a><tt class="py-lineno">2407</tt>  <tt class="py-line"> </tt>
+<a name="L2408"></a><tt class="py-lineno">2408</tt>  <tt class="py-line">        <tt id="link-2525" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2525', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2526" 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-2526', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2527" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2492', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2365"></a><tt class="py-lineno">2365</tt>  <tt class="py-line">        <tt class="py-name">out</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="L2366"></a><tt class="py-lineno">2366</tt>  <tt class="py-line">        <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt id="link-2493" class="py-name" targets="Function lxml.etree.dump()=lxml.etree-module.html#dump,Function lxml.objectify.dump()=lxml.objectify-module.html#dump"><a title="lxml.etree.dump
-lxml.objectify.dump" class="py-name" href="#" onclick="return doclink('link-2493', 'dump', 'link-2493');">dump</a></tt><tt class="py-op">(</tt><tt id="link-2494" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2494', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>
-<a name="L2367"></a><tt class="py-lineno">2367</tt>  <tt class="py-line"> </tt>
-<a name="L2368"></a><tt class="py-lineno">2368</tt>  <tt class="py-line">        <tt class="py-name">new_root</tt> <tt class="py-op">=</tt> <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">out</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>
-<a name="L2369"></a><tt class="py-lineno">2369</tt>  <tt class="py-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="L2370"></a><tt class="py-lineno">2370</tt>  <tt class="py-line">            <tt id="link-2495" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2527', 'xml_str', 'link-59');">xml_str</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2409"></a><tt class="py-lineno">2409</tt>  <tt class="py-line">        <tt class="py-name">out</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="L2410"></a><tt class="py-lineno">2410</tt>  <tt class="py-line">        <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt id="link-2528" class="py-name" targets="Function lxml.etree.dump()=lxml.etree-module.html#dump,Function lxml.objectify.dump()=lxml.objectify-module.html#dump"><a title="lxml.etree.dump
+lxml.objectify.dump" class="py-name" href="#" onclick="return doclink('link-2528', 'dump', 'link-2528');">dump</a></tt><tt class="py-op">(</tt><tt id="link-2529" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2529', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>
+<a name="L2411"></a><tt class="py-lineno">2411</tt>  <tt class="py-line"> </tt>
+<a name="L2412"></a><tt class="py-lineno">2412</tt>  <tt class="py-line">        <tt class="py-name">new_root</tt> <tt class="py-op">=</tt> <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">out</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>
+<a name="L2413"></a><tt class="py-lineno">2413</tt>  <tt class="py-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="L2414"></a><tt class="py-lineno">2414</tt>  <tt class="py-line">            <tt id="link-2530" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2495', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2496" 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-2496', 'tostring', 'link-2496');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">new_root</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2371"></a><tt class="py-lineno">2371</tt>  <tt class="py-line">            <tt id="link-2497" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2530', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2531" 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-2531', 'tostring', 'link-2531');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">new_root</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2415"></a><tt class="py-lineno">2415</tt>  <tt class="py-line">            <tt id="link-2532" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2497', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2498" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2498', 'tostring', 'link-2496');">tostring</a></tt><tt class="py-op">(</tt><tt id="link-2499" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2499', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2372"></a><tt class="py-lineno">2372</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_pickle_elementtree"></a><div id="ObjectifyTestCase.test_pickle_elementtree-def"><a name="L2373"></a><tt class="py-lineno">2373</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pickle_elementtree-toggle" onclick="return toggle('ObjectifyTestCase.test_pickle_elementtree');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_elementtree">test_pickle_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="ObjectifyTestCase.test_pickle_elementtree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pickle_elementtree-expanded"><a name="L2374"></a><tt class="py-lineno">2374</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt class="py-name">pickle</tt> </tt>
-<a name="L2375"></a><tt class="py-lineno">2375</tt>  <tt class="py-line"> </tt>
-<a name="L2376"></a><tt class="py-lineno">2376</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2500" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2532', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2533" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2533', 'tostring', 'link-2531');">tostring</a></tt><tt class="py-op">(</tt><tt id="link-2534" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2534', 'root', 'link-144');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2416"></a><tt class="py-lineno">2416</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_pickle_elementtree"></a><div id="ObjectifyTestCase.test_pickle_elementtree-def"><a name="L2417"></a><tt class="py-lineno">2417</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pickle_elementtree-toggle" onclick="return toggle('ObjectifyTestCase.test_pickle_elementtree');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_elementtree">test_pickle_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="ObjectifyTestCase.test_pickle_elementtree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pickle_elementtree-expanded"><a name="L2418"></a><tt class="py-lineno">2418</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt class="py-name">pickle</tt> </tt>
+<a name="L2419"></a><tt class="py-lineno">2419</tt>  <tt class="py-line"> </tt>
+<a name="L2420"></a><tt class="py-lineno">2420</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2535" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2500', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2501" class="py-name" targets="Function lxml.etree.ElementTree()=lxml.etree-module.html#ElementTree,Module xml.etree.ElementTree=xml.etree.ElementTree-module.html,Class xml.etree.ElementTree.ElementTree=xml.etree.ElementTree.ElementTree-class.html"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2535', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2536" class="py-name" targets="Function lxml.etree.ElementTree()=lxml.etree-module.html#ElementTree,Module xml.etree.ElementTree=xml.etree.ElementTree-module.html,Class xml.etree.ElementTree.ElementTree=xml.etree.ElementTree.ElementTree-class.html"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2501', 'ElementTree', 'link-2501');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2502" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2536', 'ElementTree', 'link-2536');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2537" 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-2502', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2503" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2537', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2538" class="py-name"><a title="lxml.tests.test_classlookup.xml_str
 lxml.tests.test_objectify.xml_str
-lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2503', 'xml_str', 'link-59');">xml_str</a></tt> <tt class="py-op">+</tt> <tt class="py-string">"&lt;?my pi?&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2377"></a><tt class="py-lineno">2377</tt>  <tt class="py-line">        <tt class="py-name">out</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="L2378"></a><tt class="py-lineno">2378</tt>  <tt class="py-line">        <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt id="link-2504" class="py-name"><a title="lxml.etree.dump
-lxml.objectify.dump" class="py-name" href="#" onclick="return doclink('link-2504', 'dump', 'link-2493');">dump</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>
-<a name="L2379"></a><tt class="py-lineno">2379</tt>  <tt class="py-line"> </tt>
-<a name="L2380"></a><tt class="py-lineno">2380</tt>  <tt class="py-line">        <tt class="py-name">new_tree</tt> <tt class="py-op">=</tt> <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">out</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>
-<a name="L2381"></a><tt class="py-lineno">2381</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">new_tree</tt><tt class="py-op">,</tt> <tt id="link-2505" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.xml_str" class="py-name" href="#" onclick="return doclink('link-2538', 'xml_str', 'link-59');">xml_str</a></tt> <tt class="py-op">+</tt> <tt class="py-string">"&lt;?my pi?&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2421"></a><tt class="py-lineno">2421</tt>  <tt class="py-line">        <tt class="py-name">out</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="L2422"></a><tt class="py-lineno">2422</tt>  <tt class="py-line">        <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt id="link-2539" class="py-name"><a title="lxml.etree.dump
+lxml.objectify.dump" class="py-name" href="#" onclick="return doclink('link-2539', 'dump', 'link-2528');">dump</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>
+<a name="L2423"></a><tt class="py-lineno">2423</tt>  <tt class="py-line"> </tt>
+<a name="L2424"></a><tt class="py-lineno">2424</tt>  <tt class="py-line">        <tt class="py-name">new_tree</tt> <tt class="py-op">=</tt> <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">out</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>
+<a name="L2425"></a><tt class="py-lineno">2425</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">new_tree</tt><tt class="py-op">,</tt> <tt id="link-2540" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2505', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2506" class="py-name" targets="Class lxml.etree._ElementTree=lxml.etree._ElementTree-class.html"><a title="lxml.etree._ElementTree" class="py-name" href="#" onclick="return doclink('link-2506', '_ElementTree', 'link-2506');">_ElementTree</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2382"></a><tt class="py-lineno">2382</tt>  <tt class="py-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="L2383"></a><tt class="py-lineno">2383</tt>  <tt class="py-line">            <tt id="link-2507" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2540', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2541" class="py-name" targets="Class lxml.etree._ElementTree=lxml.etree._ElementTree-class.html"><a title="lxml.etree._ElementTree" class="py-name" href="#" onclick="return doclink('link-2541', '_ElementTree', 'link-2541');">_ElementTree</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2426"></a><tt class="py-lineno">2426</tt>  <tt class="py-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="L2427"></a><tt class="py-lineno">2427</tt>  <tt class="py-line">            <tt id="link-2542" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2507', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2508" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2508', 'tostring', 'link-2496');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">new_tree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2384"></a><tt class="py-lineno">2384</tt>  <tt class="py-line">            <tt id="link-2509" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2542', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2543" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2543', 'tostring', 'link-2531');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">new_tree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2428"></a><tt class="py-lineno">2428</tt>  <tt class="py-line">            <tt id="link-2544" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2509', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2510" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2510', 'tostring', 'link-2496');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2385"></a><tt class="py-lineno">2385</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_pickle_intelement"></a><div id="ObjectifyTestCase.test_pickle_intelement-def"><a name="L2386"></a><tt class="py-lineno">2386</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pickle_intelement-toggle" onclick="return toggle('ObjectifyTestCase.test_pickle_intelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_intelement">test_pickle_intelement</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="ObjectifyTestCase.test_pickle_intelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pickle_intelement-expanded"><a name="L2387"></a><tt class="py-lineno">2387</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2511" class="py-name" targets="Method lxml.tests.test_objectify.ObjectifyTestCase._test_pickle()=lxml.tests.test_objectify.ObjectifyTestCase-class.html#_test_pickle"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2511', '_test_pickle', 'link-2511');">_test_pickle</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;x&gt;42&lt;/x&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2388"></a><tt class="py-lineno">2388</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2512" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2512', '_test_pickle', 'link-2511');">_test_pickle</a></tt><tt class="py-op">(</tt><tt id="link-2513" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2513', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2514" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2514', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-number">42</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2389"></a><tt class="py-lineno">2389</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_pickle_floattelement"></a><div id="ObjectifyTestCase.test_pickle_floattelement-def"><a name="L2390"></a><tt class="py-lineno">2390</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pickle_floattelement-toggle" onclick="return toggle('ObjectifyTestCase.test_pickle_floattelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_floattelement">test_pickle_floattelement</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="ObjectifyTestCase.test_pickle_floattelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pickle_floattelement-expanded"><a name="L2391"></a><tt class="py-lineno">2391</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2515" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2515', '_test_pickle', 'link-2511');">_test_pickle</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;x&gt;42.0&lt;/x&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2392"></a><tt class="py-lineno">2392</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2516" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2516', '_test_pickle', 'link-2511');">_test_pickle</a></tt><tt class="py-op">(</tt><tt id="link-2517" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2517', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2518" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2518', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-number">42.0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2393"></a><tt class="py-lineno">2393</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_pickle_strelement"></a><div id="ObjectifyTestCase.test_pickle_strelement-def"><a name="L2394"></a><tt class="py-lineno">2394</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pickle_strelement-toggle" onclick="return toggle('ObjectifyTestCase.test_pickle_strelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_strelement">test_pickle_strelement</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="ObjectifyTestCase.test_pickle_strelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pickle_strelement-expanded"><a name="L2395"></a><tt class="py-lineno">2395</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2519" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2519', '_test_pickle', 'link-2511');">_test_pickle</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;x&gt;Pickle me!&lt;/x&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2396"></a><tt class="py-lineno">2396</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2520" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2520', '_test_pickle', 'link-2511');">_test_pickle</a></tt><tt class="py-op">(</tt><tt id="link-2521" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2521', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2522" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2522', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-string">'Pickle me!'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2397"></a><tt class="py-lineno">2397</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_pickle_boolelement"></a><div id="ObjectifyTestCase.test_pickle_boolelement-def"><a name="L2398"></a><tt class="py-lineno">2398</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pickle_boolelement-toggle" onclick="return toggle('ObjectifyTestCase.test_pickle_boolelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_boolelement">test_pickle_boolelement</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="ObjectifyTestCase.test_pickle_boolelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pickle_boolelement-expanded"><a name="L2399"></a><tt class="py-lineno">2399</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2523" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2523', '_test_pickle', 'link-2511');">_test_pickle</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;x&gt;true&lt;/x&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2400"></a><tt class="py-lineno">2400</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2524" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2524', '_test_pickle', 'link-2511');">_test_pickle</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;x&gt;false&lt;/x&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2401"></a><tt class="py-lineno">2401</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2525" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2525', '_test_pickle', 'link-2511');">_test_pickle</a></tt><tt class="py-op">(</tt><tt id="link-2526" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2526', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2527" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2527', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2402"></a><tt class="py-lineno">2402</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2528" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2528', '_test_pickle', 'link-2511');">_test_pickle</a></tt><tt class="py-op">(</tt><tt id="link-2529" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2529', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2530" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2530', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2403"></a><tt class="py-lineno">2403</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_pickle_noneelement"></a><div id="ObjectifyTestCase.test_pickle_noneelement-def"><a name="L2404"></a><tt class="py-lineno">2404</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pickle_noneelement-toggle" onclick="return toggle('ObjectifyTestCase.test_pickle_noneelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_noneelement">test_pickle_noneelement</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="ObjectifyTestCase.test_pickle_noneelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pickle_noneelement-expanded"><a name="L2405"></a><tt class="py-lineno">2405</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2531" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2531', '_test_pickle', 'link-2511');">_test_pickle</a></tt><tt class="py-op">(</tt><tt class="py-string">'''</tt> </tt>
-<a name="L2406"></a><tt class="py-lineno">2406</tt>  <tt class="py-line"><tt class="py-string">&lt;x xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L2407"></a><tt class="py-lineno">2407</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2532" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2532', '_test_pickle', 'link-2511');">_test_pickle</a></tt><tt class="py-op">(</tt><tt id="link-2533" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2533', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2534" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2534', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2408"></a><tt class="py-lineno">2408</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase._test_pickle"></a><div id="ObjectifyTestCase._test_pickle-def"><a name="L2409"></a><tt class="py-lineno">2409</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase._test_pickle-toggle" onclick="return toggle('ObjectifyTestCase._test_pickle');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#_test_pickle">_test_pickle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stringOrElt</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ObjectifyTestCase._test_pickle-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase._test_pickle-expanded"><a name="L2410"></a><tt class="py-lineno">2410</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt class="py-name">pickle</tt> </tt>
-<a name="L2411"></a><tt class="py-lineno">2411</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">stringOrElt</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-2535" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2544', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2545" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2545', 'tostring', 'link-2531');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2429"></a><tt class="py-lineno">2429</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_pickle_intelement"></a><div id="ObjectifyTestCase.test_pickle_intelement-def"><a name="L2430"></a><tt class="py-lineno">2430</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pickle_intelement-toggle" onclick="return toggle('ObjectifyTestCase.test_pickle_intelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_intelement">test_pickle_intelement</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="ObjectifyTestCase.test_pickle_intelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pickle_intelement-expanded"><a name="L2431"></a><tt class="py-lineno">2431</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2546" class="py-name" targets="Method lxml.tests.test_objectify.ObjectifyTestCase._test_pickle()=lxml.tests.test_objectify.ObjectifyTestCase-class.html#_test_pickle"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2546', '_test_pickle', 'link-2546');">_test_pickle</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;x&gt;42&lt;/x&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2432"></a><tt class="py-lineno">2432</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2547" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2547', '_test_pickle', 'link-2546');">_test_pickle</a></tt><tt class="py-op">(</tt><tt id="link-2548" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2548', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2549" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2549', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-number">42</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2433"></a><tt class="py-lineno">2433</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_pickle_floattelement"></a><div id="ObjectifyTestCase.test_pickle_floattelement-def"><a name="L2434"></a><tt class="py-lineno">2434</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pickle_floattelement-toggle" onclick="return toggle('ObjectifyTestCase.test_pickle_floattelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_floattelement">test_pickle_floattelement</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="ObjectifyTestCase.test_pickle_floattelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pickle_floattelement-expanded"><a name="L2435"></a><tt class="py-lineno">2435</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2550" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2550', '_test_pickle', 'link-2546');">_test_pickle</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;x&gt;42.0&lt;/x&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2436"></a><tt class="py-lineno">2436</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2551" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2551', '_test_pickle', 'link-2546');">_test_pickle</a></tt><tt class="py-op">(</tt><tt id="link-2552" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2552', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2553" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2553', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-number">42.0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2437"></a><tt class="py-lineno">2437</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_pickle_strelement"></a><div id="ObjectifyTestCase.test_pickle_strelement-def"><a name="L2438"></a><tt class="py-lineno">2438</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pickle_strelement-toggle" onclick="return toggle('ObjectifyTestCase.test_pickle_strelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_strelement">test_pickle_strelement</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="ObjectifyTestCase.test_pickle_strelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pickle_strelement-expanded"><a name="L2439"></a><tt class="py-lineno">2439</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2554" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2554', '_test_pickle', 'link-2546');">_test_pickle</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;x&gt;Pickle me!&lt;/x&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2440"></a><tt class="py-lineno">2440</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2555" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2555', '_test_pickle', 'link-2546');">_test_pickle</a></tt><tt class="py-op">(</tt><tt id="link-2556" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2556', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2557" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2557', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-string">'Pickle me!'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2441"></a><tt class="py-lineno">2441</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_pickle_boolelement"></a><div id="ObjectifyTestCase.test_pickle_boolelement-def"><a name="L2442"></a><tt class="py-lineno">2442</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pickle_boolelement-toggle" onclick="return toggle('ObjectifyTestCase.test_pickle_boolelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_boolelement">test_pickle_boolelement</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="ObjectifyTestCase.test_pickle_boolelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pickle_boolelement-expanded"><a name="L2443"></a><tt class="py-lineno">2443</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2558" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2558', '_test_pickle', 'link-2546');">_test_pickle</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;x&gt;true&lt;/x&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2444"></a><tt class="py-lineno">2444</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2559" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2559', '_test_pickle', 'link-2546');">_test_pickle</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;x&gt;false&lt;/x&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2445"></a><tt class="py-lineno">2445</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2560" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2560', '_test_pickle', 'link-2546');">_test_pickle</a></tt><tt class="py-op">(</tt><tt id="link-2561" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2561', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2562" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2562', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2446"></a><tt class="py-lineno">2446</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2563" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2563', '_test_pickle', 'link-2546');">_test_pickle</a></tt><tt class="py-op">(</tt><tt id="link-2564" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2564', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2565" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2565', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2447"></a><tt class="py-lineno">2447</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_pickle_noneelement"></a><div id="ObjectifyTestCase.test_pickle_noneelement-def"><a name="L2448"></a><tt class="py-lineno">2448</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_pickle_noneelement-toggle" onclick="return toggle('ObjectifyTestCase.test_pickle_noneelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_noneelement">test_pickle_noneelement</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="ObjectifyTestCase.test_pickle_noneelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_pickle_noneelement-expanded"><a name="L2449"></a><tt class="py-lineno">2449</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2566" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2566', '_test_pickle', 'link-2546');">_test_pickle</a></tt><tt class="py-op">(</tt><tt class="py-string">'''</tt> </tt>
+<a name="L2450"></a><tt class="py-lineno">2450</tt>  <tt class="py-line"><tt class="py-string">&lt;x xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L2451"></a><tt class="py-lineno">2451</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2567" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase._test_pickle" class="py-name" href="#" onclick="return doclink('link-2567', '_test_pickle', 'link-2546');">_test_pickle</a></tt><tt class="py-op">(</tt><tt id="link-2568" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2568', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2569" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2569', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2452"></a><tt class="py-lineno">2452</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase._test_pickle"></a><div id="ObjectifyTestCase._test_pickle-def"><a name="L2453"></a><tt class="py-lineno">2453</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase._test_pickle-toggle" onclick="return toggle('ObjectifyTestCase._test_pickle');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#_test_pickle">_test_pickle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stringOrElt</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ObjectifyTestCase._test_pickle-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase._test_pickle-expanded"><a name="L2454"></a><tt class="py-lineno">2454</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt class="py-name">pickle</tt> </tt>
+<a name="L2455"></a><tt class="py-lineno">2455</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">stringOrElt</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-2570" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2535', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2536" class="py-name" targets="Class lxml.etree._Element=lxml.etree._Element-class.html"><a title="lxml.etree._Element" class="py-name" href="#" onclick="return doclink('link-2536', '_Element', 'link-2536');">_Element</a></tt><tt class="py-op">,</tt> <tt id="link-2537" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2570', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2571" class="py-name" targets="Class lxml.etree._Element=lxml.etree._Element-class.html"><a title="lxml.etree._Element" class="py-name" href="#" onclick="return doclink('link-2571', '_Element', 'link-2571');">_Element</a></tt><tt class="py-op">,</tt> <tt id="link-2572" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2537', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2538" class="py-name"><a title="lxml.etree._ElementTree" class="py-name" href="#" onclick="return doclink('link-2538', '_ElementTree', 'link-2506');">_ElementTree</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L2412"></a><tt class="py-lineno">2412</tt>  <tt class="py-line">            <tt class="py-name">elt</tt> <tt class="py-op">=</tt> <tt class="py-name">stringOrElt</tt> </tt>
-<a name="L2413"></a><tt class="py-lineno">2413</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L2414"></a><tt class="py-lineno">2414</tt>  <tt class="py-line">            <tt class="py-name">elt</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2539" 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-2539', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt class="py-name">stringOrElt</tt><tt class="py-op">)</tt> </tt>
-<a name="L2415"></a><tt class="py-lineno">2415</tt>  <tt class="py-line">        <tt class="py-name">out</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="L2416"></a><tt class="py-lineno">2416</tt>  <tt class="py-line">        <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt id="link-2540" class="py-name"><a title="lxml.etree.dump
-lxml.objectify.dump" class="py-name" href="#" onclick="return doclink('link-2540', 'dump', 'link-2493');">dump</a></tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>
-<a name="L2417"></a><tt class="py-lineno">2417</tt>  <tt class="py-line"> </tt>
-<a name="L2418"></a><tt class="py-lineno">2418</tt>  <tt class="py-line">        <tt class="py-name">new_elt</tt> <tt class="py-op">=</tt> <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">out</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>
-<a name="L2419"></a><tt class="py-lineno">2419</tt>  <tt class="py-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="L2420"></a><tt class="py-lineno">2420</tt>  <tt class="py-line">            <tt id="link-2541" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2572', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2573" class="py-name"><a title="lxml.etree._ElementTree" class="py-name" href="#" onclick="return doclink('link-2573', '_ElementTree', 'link-2541');">_ElementTree</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2456"></a><tt class="py-lineno">2456</tt>  <tt class="py-line">            <tt class="py-name">elt</tt> <tt class="py-op">=</tt> <tt class="py-name">stringOrElt</tt> </tt>
+<a name="L2457"></a><tt class="py-lineno">2457</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2458"></a><tt class="py-lineno">2458</tt>  <tt class="py-line">            <tt class="py-name">elt</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2574" 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-2574', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt class="py-name">stringOrElt</tt><tt class="py-op">)</tt> </tt>
+<a name="L2459"></a><tt class="py-lineno">2459</tt>  <tt class="py-line">        <tt class="py-name">out</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="L2460"></a><tt class="py-lineno">2460</tt>  <tt class="py-line">        <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt id="link-2575" class="py-name"><a title="lxml.etree.dump
+lxml.objectify.dump" class="py-name" href="#" onclick="return doclink('link-2575', 'dump', 'link-2528');">dump</a></tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>
+<a name="L2461"></a><tt class="py-lineno">2461</tt>  <tt class="py-line"> </tt>
+<a name="L2462"></a><tt class="py-lineno">2462</tt>  <tt class="py-line">        <tt class="py-name">new_elt</tt> <tt class="py-op">=</tt> <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">out</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>
+<a name="L2463"></a><tt class="py-lineno">2463</tt>  <tt class="py-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="L2464"></a><tt class="py-lineno">2464</tt>  <tt class="py-line">            <tt id="link-2576" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2541', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2542" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2542', 'tostring', 'link-2496');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">new_elt</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2421"></a><tt class="py-lineno">2421</tt>  <tt class="py-line">            <tt id="link-2543" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2576', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2577" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2577', 'tostring', 'link-2531');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">new_elt</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2465"></a><tt class="py-lineno">2465</tt>  <tt class="py-line">            <tt id="link-2578" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2543', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2544" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2544', 'tostring', 'link-2496');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2422"></a><tt class="py-lineno">2422</tt>  <tt class="py-line"> </tt>
-<a name="L2423"></a><tt class="py-lineno">2423</tt>  <tt class="py-line">    <tt class="py-comment"># E-Factory tests, need to use sub-elements as root element is always</tt> </tt>
-<a name="L2424"></a><tt class="py-lineno">2424</tt>  <tt class="py-line">    <tt class="py-comment"># type-looked-up as ObjectifiedElement (no annotations)</tt> </tt>
-<a name="ObjectifyTestCase.test_efactory_int"></a><div id="ObjectifyTestCase.test_efactory_int-def"><a name="L2425"></a><tt class="py-lineno">2425</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_int-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_int');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_int">test_efactory_int</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="ObjectifyTestCase.test_efactory_int-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_int-expanded"><a name="L2426"></a><tt class="py-lineno">2426</tt>  <tt class="py-line">        <tt id="link-2545" class="py-name"><a title="lxml.builder.E
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2578', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2579" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2579', 'tostring', 'link-2531');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2466"></a><tt class="py-lineno">2466</tt>  <tt class="py-line"> </tt>
+<a name="L2467"></a><tt class="py-lineno">2467</tt>  <tt class="py-line">    <tt class="py-comment"># E-Factory tests, need to use sub-elements as root element is always</tt> </tt>
+<a name="L2468"></a><tt class="py-lineno">2468</tt>  <tt class="py-line">    <tt class="py-comment"># type-looked-up as ObjectifiedElement (no annotations)</tt> </tt>
+<a name="ObjectifyTestCase.test_efactory_int"></a><div id="ObjectifyTestCase.test_efactory_int-def"><a name="L2469"></a><tt class="py-lineno">2469</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_int-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_int');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_int">test_efactory_int</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="ObjectifyTestCase.test_efactory_int-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_int-expanded"><a name="L2470"></a><tt class="py-lineno">2470</tt>  <tt class="py-line">        <tt id="link-2580" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2545', 'E', 'link-1813');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2546" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2546', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2547" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2580', 'E', 'link-1848');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2581" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2581', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2582" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2547', 'E', 'link-1813');">E</a></tt> </tt>
-<a name="L2427"></a><tt class="py-lineno">2427</tt>  <tt class="py-line">        <tt id="link-2548" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2548', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2549" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2582', 'E', 'link-1848');">E</a></tt> </tt>
+<a name="L2471"></a><tt class="py-lineno">2471</tt>  <tt class="py-line">        <tt id="link-2583" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2583', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2584" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2549', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt id="link-2550" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2550', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt id="link-2551" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2584', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt id="link-2585" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2585', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt id="link-2586" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2551', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">(</tt><tt class="py-number">23</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2428"></a><tt class="py-lineno">2428</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2552" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2552', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-2553" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2553', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2554" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-2554', 'IntElement', 'link-35');">IntElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2429"></a><tt class="py-lineno">2429</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_efactory_float"></a><div id="ObjectifyTestCase.test_efactory_float-def"><a name="L2430"></a><tt class="py-lineno">2430</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_float-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_float');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_float">test_efactory_float</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="ObjectifyTestCase.test_efactory_float-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_float-expanded"><a name="L2431"></a><tt class="py-lineno">2431</tt>  <tt class="py-line">        <tt id="link-2555" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2586', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">(</tt><tt class="py-number">23</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2472"></a><tt class="py-lineno">2472</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2587" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2587', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-2588" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2588', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2589" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-2589', 'IntElement', 'link-35');">IntElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2473"></a><tt class="py-lineno">2473</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_efactory_float"></a><div id="ObjectifyTestCase.test_efactory_float-def"><a name="L2474"></a><tt class="py-lineno">2474</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_float-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_float');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_float">test_efactory_float</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="ObjectifyTestCase.test_efactory_float-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_float-expanded"><a name="L2475"></a><tt class="py-lineno">2475</tt>  <tt class="py-line">        <tt id="link-2590" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2555', 'E', 'link-1813');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2556" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2556', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2557" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2590', 'E', 'link-1848');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2591" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2591', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2592" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2557', 'E', 'link-1813');">E</a></tt> </tt>
-<a name="L2432"></a><tt class="py-lineno">2432</tt>  <tt class="py-line">        <tt id="link-2558" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2558', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2559" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2592', 'E', 'link-1848');">E</a></tt> </tt>
+<a name="L2476"></a><tt class="py-lineno">2476</tt>  <tt class="py-line">        <tt id="link-2593" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2593', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2594" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2559', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt id="link-2560" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2560', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt id="link-2561" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2594', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt id="link-2595" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2595', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt id="link-2596" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2561', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">(</tt><tt class="py-number">233.23</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2433"></a><tt class="py-lineno">2433</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2562" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2562', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-2563" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2563', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2564" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-2564', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2434"></a><tt class="py-lineno">2434</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_efactory_str"></a><div id="ObjectifyTestCase.test_efactory_str-def"><a name="L2435"></a><tt class="py-lineno">2435</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_str-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_str');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_str">test_efactory_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="ObjectifyTestCase.test_efactory_str-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_str-expanded"><a name="L2436"></a><tt class="py-lineno">2436</tt>  <tt class="py-line">        <tt id="link-2565" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2596', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">(</tt><tt class="py-number">233.23</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2477"></a><tt class="py-lineno">2477</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2597" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2597', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-2598" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2598', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2599" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-2599', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2478"></a><tt class="py-lineno">2478</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_efactory_str"></a><div id="ObjectifyTestCase.test_efactory_str-def"><a name="L2479"></a><tt class="py-lineno">2479</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_str-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_str');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_str">test_efactory_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="ObjectifyTestCase.test_efactory_str-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_str-expanded"><a name="L2480"></a><tt class="py-lineno">2480</tt>  <tt class="py-line">        <tt id="link-2600" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2565', 'E', 'link-1813');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2566" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2566', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2567" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2600', 'E', 'link-1848');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2601" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2601', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2602" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2567', 'E', 'link-1813');">E</a></tt> </tt>
-<a name="L2437"></a><tt class="py-lineno">2437</tt>  <tt class="py-line">        <tt id="link-2568" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2568', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2569" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2602', 'E', 'link-1848');">E</a></tt> </tt>
+<a name="L2481"></a><tt class="py-lineno">2481</tt>  <tt class="py-line">        <tt id="link-2603" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2603', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2604" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2569', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt id="link-2570" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2570', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt id="link-2571" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2604', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt id="link-2605" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2605', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt id="link-2606" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2571', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">(</tt><tt class="py-string">"what?"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2438"></a><tt class="py-lineno">2438</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2572" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2572', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-2573" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2573', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2574" class="py-name"><a title="lxml.objectify.StringElement" class="py-name" href="#" onclick="return doclink('link-2574', 'StringElement', 'link-41');">StringElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2439"></a><tt class="py-lineno">2439</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_efactory_unicode"></a><div id="ObjectifyTestCase.test_efactory_unicode-def"><a name="L2440"></a><tt class="py-lineno">2440</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_unicode-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_unicode');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_unicode">test_efactory_unicode</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="ObjectifyTestCase.test_efactory_unicode-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_unicode-expanded"><a name="L2441"></a><tt class="py-lineno">2441</tt>  <tt class="py-line">        <tt id="link-2575" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2606', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">(</tt><tt class="py-string">"what?"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2482"></a><tt class="py-lineno">2482</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2607" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2607', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-2608" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2608', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2609" class="py-name"><a title="lxml.objectify.StringElement" class="py-name" href="#" onclick="return doclink('link-2609', 'StringElement', 'link-41');">StringElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2483"></a><tt class="py-lineno">2483</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_efactory_unicode"></a><div id="ObjectifyTestCase.test_efactory_unicode-def"><a name="L2484"></a><tt class="py-lineno">2484</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_unicode-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_unicode');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_unicode">test_efactory_unicode</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="ObjectifyTestCase.test_efactory_unicode-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_unicode-expanded"><a name="L2485"></a><tt class="py-lineno">2485</tt>  <tt class="py-line">        <tt id="link-2610" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2575', 'E', 'link-1813');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2576" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2576', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2577" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2610', 'E', 'link-1848');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2611" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2611', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2612" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2577', 'E', 'link-1813');">E</a></tt> </tt>
-<a name="L2442"></a><tt class="py-lineno">2442</tt>  <tt class="py-line">        <tt id="link-2578" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2578', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2579" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2612', 'E', 'link-1848');">E</a></tt> </tt>
+<a name="L2486"></a><tt class="py-lineno">2486</tt>  <tt class="py-line">        <tt id="link-2613" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2613', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2614" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2579', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt id="link-2580" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2580', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt id="link-2581" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2614', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt id="link-2615" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2615', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt id="link-2616" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2581', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">(</tt><tt id="link-2582" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2582', '_str', 'link-18');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">"bl&#246;&#246;dy h&#228;ll"</tt><tt class="py-op">,</tt> <tt id="link-2583" class="py-name" targets="Variable lxml.etree.DocInfo.encoding=lxml.etree.DocInfo-class.html#encoding,Function lxml.tests.selftest.encoding()=lxml.tests.selftest-module.html#encoding,Function lxml.tests.selftest2.encoding()=lxml.tests.selftest2-module.html#encoding"><a title="lxml.etree.DocInfo.encoding
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2616', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">(</tt><tt id="link-2617" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2617', '_str', 'link-18');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">"bl&#246;&#246;dy h&#228;ll"</tt><tt class="py-op">,</tt> <tt id="link-2618" class="py-name" targets="Variable lxml.etree.DocInfo.encoding=lxml.etree.DocInfo-class.html#encoding,Function lxml.tests.selftest.encoding()=lxml.tests.selftest-module.html#encoding,Function lxml.tests.selftest2.encoding()=lxml.tests.selftest2-module.html#encoding"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-2583', 'encoding', 'link-2583');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">"ISO-8859-1"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2443"></a><tt class="py-lineno">2443</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2584" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2584', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-2585" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2585', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2586" class="py-name"><a title="lxml.objectify.StringElement" class="py-name" href="#" onclick="return doclink('link-2586', 'StringElement', 'link-41');">StringElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2444"></a><tt class="py-lineno">2444</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_efactory_bool"></a><div id="ObjectifyTestCase.test_efactory_bool-def"><a name="L2445"></a><tt class="py-lineno">2445</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_bool-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_bool');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_bool">test_efactory_bool</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="ObjectifyTestCase.test_efactory_bool-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_bool-expanded"><a name="L2446"></a><tt class="py-lineno">2446</tt>  <tt class="py-line">        <tt id="link-2587" class="py-name"><a title="lxml.builder.E
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-2618', 'encoding', 'link-2618');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">"ISO-8859-1"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2487"></a><tt class="py-lineno">2487</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2619" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2619', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-2620" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2620', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2621" class="py-name"><a title="lxml.objectify.StringElement" class="py-name" href="#" onclick="return doclink('link-2621', 'StringElement', 'link-41');">StringElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2488"></a><tt class="py-lineno">2488</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_efactory_bool"></a><div id="ObjectifyTestCase.test_efactory_bool-def"><a name="L2489"></a><tt class="py-lineno">2489</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_bool-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_bool');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_bool">test_efactory_bool</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="ObjectifyTestCase.test_efactory_bool-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_bool-expanded"><a name="L2490"></a><tt class="py-lineno">2490</tt>  <tt class="py-line">        <tt id="link-2622" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2587', 'E', 'link-1813');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2588" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2588', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2589" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2622', 'E', 'link-1848');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2623" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2623', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2624" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2589', 'E', 'link-1813');">E</a></tt> </tt>
-<a name="L2447"></a><tt class="py-lineno">2447</tt>  <tt class="py-line">        <tt id="link-2590" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2590', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2591" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2624', 'E', 'link-1848');">E</a></tt> </tt>
+<a name="L2491"></a><tt class="py-lineno">2491</tt>  <tt class="py-line">        <tt id="link-2625" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2625', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2626" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2591', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt id="link-2592" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2592', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt id="link-2593" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2626', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt id="link-2627" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2627', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt id="link-2628" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2593', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2448"></a><tt class="py-lineno">2448</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2594" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2594', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-2595" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2595', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2596" class="py-name"><a title="lxml.objectify.BoolElement" class="py-name" href="#" onclick="return doclink('link-2596', 'BoolElement', 'link-39');">BoolElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2449"></a><tt class="py-lineno">2449</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_efactory_none"></a><div id="ObjectifyTestCase.test_efactory_none-def"><a name="L2450"></a><tt class="py-lineno">2450</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_none-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_none');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_none">test_efactory_none</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="ObjectifyTestCase.test_efactory_none-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_none-expanded"><a name="L2451"></a><tt class="py-lineno">2451</tt>  <tt class="py-line">        <tt id="link-2597" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2628', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2492"></a><tt class="py-lineno">2492</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2629" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2629', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-2630" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2630', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2631" class="py-name"><a title="lxml.objectify.BoolElement" class="py-name" href="#" onclick="return doclink('link-2631', 'BoolElement', 'link-39');">BoolElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2493"></a><tt class="py-lineno">2493</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_efactory_none"></a><div id="ObjectifyTestCase.test_efactory_none-def"><a name="L2494"></a><tt class="py-lineno">2494</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_none-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_none');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_none">test_efactory_none</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="ObjectifyTestCase.test_efactory_none-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_none-expanded"><a name="L2495"></a><tt class="py-lineno">2495</tt>  <tt class="py-line">        <tt id="link-2632" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2597', 'E', 'link-1813');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2598" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2598', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2599" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2632', 'E', 'link-1848');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2633" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2633', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2634" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2599', 'E', 'link-1813');">E</a></tt> </tt>
-<a name="L2452"></a><tt class="py-lineno">2452</tt>  <tt class="py-line">        <tt id="link-2600" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2600', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2601" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2634', 'E', 'link-1848');">E</a></tt> </tt>
+<a name="L2496"></a><tt class="py-lineno">2496</tt>  <tt class="py-line">        <tt id="link-2635" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2635', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2636" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2601', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt id="link-2602" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2602', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt id="link-2603" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2636', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt id="link-2637" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2637', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt id="link-2638" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2603', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">val</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="L2453"></a><tt class="py-lineno">2453</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2604" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2604', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-2605" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2605', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2606" class="py-name"><a title="lxml.objectify.NoneElement" class="py-name" href="#" onclick="return doclink('link-2606', 'NoneElement', 'link-353');">NoneElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2454"></a><tt class="py-lineno">2454</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_efactory_value_concatenation"></a><div id="ObjectifyTestCase.test_efactory_value_concatenation-def"><a name="L2455"></a><tt class="py-lineno">2455</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_value_concatenation-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_value_concatenation');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_value_concatenation">test_efactory_value_concatenation</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="ObjectifyTestCase.test_efactory_value_concatenation-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_value_concatenation-expanded"><a name="L2456"></a><tt class="py-lineno">2456</tt>  <tt class="py-line">        <tt id="link-2607" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2638', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">val</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="L2497"></a><tt class="py-lineno">2497</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2639" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2639', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-2640" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2640', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2641" class="py-name"><a title="lxml.objectify.NoneElement" class="py-name" href="#" onclick="return doclink('link-2641', 'NoneElement', 'link-353');">NoneElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2498"></a><tt class="py-lineno">2498</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_efactory_value_concatenation"></a><div id="ObjectifyTestCase.test_efactory_value_concatenation-def"><a name="L2499"></a><tt class="py-lineno">2499</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_value_concatenation-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_value_concatenation');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_value_concatenation">test_efactory_value_concatenation</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="ObjectifyTestCase.test_efactory_value_concatenation-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_value_concatenation-expanded"><a name="L2500"></a><tt class="py-lineno">2500</tt>  <tt class="py-line">        <tt id="link-2642" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2607', 'E', 'link-1813');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2608" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2608', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2609" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2642', 'E', 'link-1848');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2643" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2643', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2644" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2609', 'E', 'link-1813');">E</a></tt> </tt>
-<a name="L2457"></a><tt class="py-lineno">2457</tt>  <tt class="py-line">        <tt id="link-2610" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2610', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2611" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2644', 'E', 'link-1848');">E</a></tt> </tt>
+<a name="L2501"></a><tt class="py-lineno">2501</tt>  <tt class="py-line">        <tt id="link-2645" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2645', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2646" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2611', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt id="link-2612" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2612', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt id="link-2613" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2646', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt id="link-2647" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2647', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt id="link-2648" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2613', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-string">"foo"</tt><tt class="py-op">,</tt> <tt class="py-number">2.0</tt><tt class="py-op">,</tt> <tt class="py-string">"bar "</tt><tt class="py-op">,</tt> <tt class="py-name">True</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="L2458"></a><tt class="py-lineno">2458</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2614" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2614', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-2615" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2615', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2616" class="py-name"><a title="lxml.objectify.StringElement" class="py-name" href="#" onclick="return doclink('link-2616', 'StringElement', 'link-41');">StringElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2459"></a><tt class="py-lineno">2459</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_efactory_attrib"></a><div id="ObjectifyTestCase.test_efactory_attrib-def"><a name="L2460"></a><tt class="py-lineno">2460</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_attrib-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_attrib');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_attrib">test_efactory_attrib</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="ObjectifyTestCase.test_efactory_attrib-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_attrib-expanded"><a name="L2461"></a><tt class="py-lineno">2461</tt>  <tt class="py-line">        <tt id="link-2617" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2648', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-string">"foo"</tt><tt class="py-op">,</tt> <tt class="py-number">2.0</tt><tt class="py-op">,</tt> <tt class="py-string">"bar "</tt><tt class="py-op">,</tt> <tt class="py-name">True</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="L2502"></a><tt class="py-lineno">2502</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2649" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2649', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-2650" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2650', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2651" class="py-name"><a title="lxml.objectify.StringElement" class="py-name" href="#" onclick="return doclink('link-2651', 'StringElement', 'link-41');">StringElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2503"></a><tt class="py-lineno">2503</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_efactory_attrib"></a><div id="ObjectifyTestCase.test_efactory_attrib-def"><a name="L2504"></a><tt class="py-lineno">2504</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_attrib-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_attrib');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_attrib">test_efactory_attrib</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="ObjectifyTestCase.test_efactory_attrib-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_attrib-expanded"><a name="L2505"></a><tt class="py-lineno">2505</tt>  <tt class="py-line">        <tt id="link-2652" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2617', 'E', 'link-1813');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2618" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2618', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2619" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2652', 'E', 'link-1848');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2653" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2653', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2654" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2619', 'E', 'link-1813');">E</a></tt> </tt>
-<a name="L2462"></a><tt class="py-lineno">2462</tt>  <tt class="py-line">        <tt id="link-2620" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2620', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2621" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2654', 'E', 'link-1848');">E</a></tt> </tt>
+<a name="L2506"></a><tt class="py-lineno">2506</tt>  <tt class="py-line">        <tt id="link-2655" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2655', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2656" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2621', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt id="link-2622" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2622', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt class="py-name">foo</tt><tt class="py-op">=</tt><tt class="py-string">"bar"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2463"></a><tt class="py-lineno">2463</tt>  <tt class="py-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-2623" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2623', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2624" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2656', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt id="link-2657" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2657', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt class="py-name">foo</tt><tt class="py-op">=</tt><tt class="py-string">"bar"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2507"></a><tt class="py-lineno">2507</tt>  <tt class="py-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-2658" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2658', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2659" 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-2624', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"foo"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"bar"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2464"></a><tt class="py-lineno">2464</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_efactory_nested"></a><div id="ObjectifyTestCase.test_efactory_nested-def"><a name="L2465"></a><tt class="py-lineno">2465</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_nested-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_nested');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_nested">test_efactory_nested</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="ObjectifyTestCase.test_efactory_nested-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_nested-expanded"><a name="L2466"></a><tt class="py-lineno">2466</tt>  <tt class="py-line">        <tt id="link-2625" class="py-name"><a title="lxml.builder.E
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2659', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"foo"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"bar"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2508"></a><tt class="py-lineno">2508</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_efactory_nested"></a><div id="ObjectifyTestCase.test_efactory_nested-def"><a name="L2509"></a><tt class="py-lineno">2509</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_nested-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_nested');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_nested">test_efactory_nested</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="ObjectifyTestCase.test_efactory_nested-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_nested-expanded"><a name="L2510"></a><tt class="py-lineno">2510</tt>  <tt class="py-line">        <tt id="link-2660" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2625', 'E', 'link-1813');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2626" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2626', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2627" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2660', 'E', 'link-1848');">E</a></tt> <tt class="py-op">=</tt> <tt id="link-2661" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2661', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2662" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2627', 'E', 'link-1813');">E</a></tt> </tt>
-<a name="L2467"></a><tt class="py-lineno">2467</tt>  <tt class="py-line">        <tt id="link-2628" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2628', 'DataElement', 'link-198');">DataElement</a></tt> <tt class="py-op">=</tt> <tt id="link-2629" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2629', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2630" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2630', 'DataElement', 'link-198');">DataElement</a></tt> </tt>
-<a name="L2468"></a><tt class="py-lineno">2468</tt>  <tt class="py-line">        <tt id="link-2631" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2631', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2632" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2662', 'E', 'link-1848');">E</a></tt> </tt>
+<a name="L2511"></a><tt class="py-lineno">2511</tt>  <tt class="py-line">        <tt id="link-2663" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2663', 'DataElement', 'link-198');">DataElement</a></tt> <tt class="py-op">=</tt> <tt id="link-2664" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2664', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2665" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2665', 'DataElement', 'link-198');">DataElement</a></tt> </tt>
+<a name="L2512"></a><tt class="py-lineno">2512</tt>  <tt class="py-line">        <tt id="link-2666" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2666', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2667" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2632', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt id="link-2633" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2633', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt class="py-string">"text"</tt><tt class="py-op">,</tt> <tt id="link-2634" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2667', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt id="link-2668" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2668', 'root', 'link-144');">root</a></tt><tt class="py-op">(</tt><tt class="py-string">"text"</tt><tt class="py-op">,</tt> <tt id="link-2669" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2634', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt id="link-2635" class="py-name"><a title="lxml.builder.E
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2669', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt id="link-2670" class="py-name"><a title="lxml.builder.E
 lxml.html.builder.E
-lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2635', 'E', 'link-1813');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">subsub</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"tail"</tt><tt class="py-op">,</tt> <tt id="link-2636" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2636', 'DataElement', 'link-198');">DataElement</a></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="L2469"></a><tt class="py-lineno">2469</tt>  <tt class="py-line">                      <tt id="link-2637" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2637', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-number">2.0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2470"></a><tt class="py-lineno">2470</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2638" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2638', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt id="link-2639" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2639', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2640" class="py-name"><a title="lxml.objectify.ObjectifiedElement" class="py-name" href="#" onclick="return doclink('link-2640', 'ObjectifiedElement', 'link-314');">ObjectifiedElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2471"></a><tt class="py-lineno">2471</tt>  <tt class="py-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-2641" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2641', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2642" class="py-name"><a title="lxml.etree.QName.text
+lxml.objectify.E" class="py-name" href="#" onclick="return doclink('link-2670', 'E', 'link-1848');">E</a></tt><tt class="py-op">.</tt><tt class="py-name">subsub</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"tail"</tt><tt class="py-op">,</tt> <tt id="link-2671" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2671', 'DataElement', 'link-198');">DataElement</a></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="L2513"></a><tt class="py-lineno">2513</tt>  <tt class="py-line">                      <tt id="link-2672" class="py-name"><a title="lxml.objectify.DataElement" class="py-name" href="#" onclick="return doclink('link-2672', 'DataElement', 'link-198');">DataElement</a></tt><tt class="py-op">(</tt><tt class="py-number">2.0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2514"></a><tt class="py-lineno">2514</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2673" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2673', 'root', 'link-144');">root</a></tt><tt class="py-op">,</tt> <tt id="link-2674" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2674', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2675" class="py-name"><a title="lxml.objectify.ObjectifiedElement" class="py-name" href="#" onclick="return doclink('link-2675', 'ObjectifiedElement', 'link-314');">ObjectifiedElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2515"></a><tt class="py-lineno">2515</tt>  <tt class="py-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-2676" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2676', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2677" 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-2642', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"text"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2472"></a><tt class="py-lineno">2472</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2643" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2643', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">,</tt> <tt id="link-2644" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2644', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2645" class="py-name"><a title="lxml.objectify.ObjectifiedElement" class="py-name" href="#" onclick="return doclink('link-2645', 'ObjectifiedElement', 'link-314');">ObjectifiedElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2473"></a><tt class="py-lineno">2473</tt>  <tt class="py-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-2646" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2646', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">.</tt><tt id="link-2647" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2647', 'tail', 'link-319');">tail</a></tt><tt class="py-op">,</tt> <tt class="py-string">"tail"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2474"></a><tt class="py-lineno">2474</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2648" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2648', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">.</tt><tt class="py-name">subsub</tt><tt class="py-op">,</tt> <tt id="link-2649" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2649', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2650" class="py-name"><a title="lxml.objectify.StringElement" class="py-name" href="#" onclick="return doclink('link-2650', 'StringElement', 'link-41');">StringElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2475"></a><tt class="py-lineno">2475</tt>  <tt class="py-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-2651" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2651', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2652" class="py-name"><a title="lxml.html.CheckboxGroup.value
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2677', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"text"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2516"></a><tt class="py-lineno">2516</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2678" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2678', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">,</tt> <tt id="link-2679" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2679', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2680" class="py-name"><a title="lxml.objectify.ObjectifiedElement" class="py-name" href="#" onclick="return doclink('link-2680', 'ObjectifiedElement', 'link-314');">ObjectifiedElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2517"></a><tt class="py-lineno">2517</tt>  <tt class="py-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-2681" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2681', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">.</tt><tt id="link-2682" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2682', 'tail', 'link-319');">tail</a></tt><tt class="py-op">,</tt> <tt class="py-string">"tail"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2518"></a><tt class="py-lineno">2518</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2683" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2683', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">.</tt><tt class="py-name">subsub</tt><tt class="py-op">,</tt> <tt id="link-2684" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2684', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2685" class="py-name"><a title="lxml.objectify.StringElement" class="py-name" href="#" onclick="return doclink('link-2685', 'StringElement', 'link-41');">StringElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2519"></a><tt class="py-lineno">2519</tt>  <tt class="py-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-2686" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2686', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2687" 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-2652', 'value', 'link-196');">value</a></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="L2476"></a><tt class="py-lineno">2476</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2653" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2653', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2654" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-2687', 'value', 'link-196');">value</a></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="L2520"></a><tt class="py-lineno">2520</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2688" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2688', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2689" 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-2654', 'value', 'link-196');">value</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-2655" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2655', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2656" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-2656', 'IntElement', 'link-35');">IntElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2477"></a><tt class="py-lineno">2477</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2657" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2657', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2658" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-2689', 'value', 'link-196');">value</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-2690" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2690', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2691" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-2691', 'IntElement', 'link-35');">IntElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2521"></a><tt class="py-lineno">2521</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2692" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2692', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2693" 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-2658', 'value', 'link-196');">value</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-2659" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2659', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2660" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-2660', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2478"></a><tt class="py-lineno">2478</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_efactory_subtype"></a><div id="ObjectifyTestCase.test_efactory_subtype-def"><a name="L2479"></a><tt class="py-lineno">2479</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_subtype-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_subtype');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_subtype">test_efactory_subtype</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="ObjectifyTestCase.test_efactory_subtype-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_subtype-expanded"><a name="L2480"></a><tt class="py-lineno">2480</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Attribute</tt><tt class="py-op">(</tt><tt class="py-base-class">objectify</tt><tt class="py-op">.</tt><tt class="py-base-class">ObjectifiedDataElement</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L2481"></a><tt class="py-lineno">2481</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L2482"></a><tt class="py-lineno">2482</tt>  <tt class="py-line">                <tt id="link-2661" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2661', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2662" class="py-name"><a title="lxml.objectify.ObjectifiedDataElement" class="py-name" href="#" onclick="return doclink('link-2662', 'ObjectifiedDataElement', 'link-309');">ObjectifiedDataElement</a></tt><tt class="py-op">.</tt><tt id="link-2663" class="py-name" targets="Method lxml.builder.ElementMaker.__init__()=lxml.builder.ElementMaker-class.html#__init__,Method lxml.cssselect.CSSSelector.__init__()=lxml.cssselect.CSSSelector-class.html#__init__,Method lxml.doctestcompare._RestoreChecker.__init__()=lxml.doctestcompare._RestoreChecker-class.html#__init__,Method lxml.etree.AttributeBasedElementClassLookup.__init__()=lxml.etree.AttributeBasedElementClassLookup-class.html#__init__,Method lxml.etree.CommentBase.__init__()=lxml.etree.CommentBase-class.html#__init__,Method lxml.etree.DTD.__init__()=lxml.etree.DTD-class.html#__init__,Method lxml.etree.ETCompatXMLParser.__init__()=lxml.etree.ETCompatXMLParser-class.html#__init__,Method lxml.etree.ETXPath.__init__()=lxml.etree.ETXPath-class.html#__init__,Method lxml.etree.ElementBase.__init__()=lxml.etree.ElementBase-class.html#__init__,Method lxml.etree.ElementDefaultClassLookup.__init__()=lxml.etree.ElementDefaultClassLookup-class.html#__init__,Method lxml.etree.ElementNamespaceClassLookup.__init__()=lxml.etree.ElementNamespaceClassLookup-class.html#__init__,Method lxml.etree.EntityBase.__init__()=lxml.etree.EntityBase-class.html#__init__,Method lxml.etree.FallbackElementClassLookup.__init__()=lxml.etree.FallbackElementClassLookup-class.html#__init__,Method lxml.etree.HTMLParser.__init__()=lxml.etree.HTMLParser-class.html#__init__,Method lxml.etree.HTMLPullParser.__init__()=lxml.etree.HTMLPullParser-class.html#__init__,Method lxml.etree.LxmlError.__init__()=lxml.etree.LxmlError-class.html#__init__,Method lxml.etree.PIBase.__init__()=lxml.etree.PIBase-class.html#__init__,Method lxml.etree.ParseError.__init__()=lxml.etree.ParseError-class.html#__init__,Method lxml.etree.PyErrorLog.__init__()=lxml.etree.PyErrorLog-class.html#__init__,Method lxml.etree.QName.__init__()=lxml.etree.QName-class.html#__init__,Method lxml.etree.RelaxNG.__init__()=lxml.etree.RelaxNG-class.html#__init__,Method lxml.etree.Schematron.__init__()=lxml.etree.Schematron-class.html#__init__,Method lxml.etree.TreeBuilder.__init__()=lxml.etree.TreeBuilder-class.html#__init__,Method lxml.etree.XInclude.__init__()=lxml.etree.XInclude-class.html#__init__,Method lxml.etree.XMLParser.__init__()=lxml.etree.XMLParser-class.html#__init__,Method lxml.etree.XMLPullParser.__init__()=lxml.etree.XMLPullParser-class.html#__init__,Method lxml.etree.XMLSchema.__init__()=lxml.etree.XMLSchema-class.html#__init__,Method lxml.etree.XPath.__init__()=lxml.etree.XPath-class.html#__init__,Method lxml.etree.XPathDocumentEvaluator.__init__()=lxml.etree.XPathDocumentEvaluator-class.html#__init__,Method lxml.etree.XPathElementEvaluator.__init__()=lxml.etree.XPathElementEvaluator-class.html#__init__,Method lxml.etree.XSLT.__init__()=lxml.etree.XSLT-class.html#__init__,Method lxml.etree.XSLTAccessControl.__init__()=lxml.etree.XSLTAccessControl-class.html#__init__,Method lxml.etree._BaseErrorLog.__init__()=lxml.etree._BaseErrorLog-class.html#__init__,Method lxml.etree._DomainErrorLog.__init__()=lxml.etree._DomainErrorLog-class.html#__init__,Method lxml.etree._ErrorLog.__init__()=lxml.etree._ErrorLog-class.html#__init__,Method lxml.etree._ListErrorLog.__init__()=lxml.etree._ListErrorLog-class.html#__init__,Method lxml.etree._RotatingErrorLog.__init__()=lxml.etree._RotatingErrorLog-class.html#__init__,Method lxml.etree._TargetParserResult.__init__()=lxml.etree._TargetParserResult-class.html#__init__,Method lxml.etree._XPathEvaluatorBase.__init__()=lxml.etree._XPathEvaluatorBase-class.html#__init__,Method lxml.etree.htmlfile.__init__()=lxml.etree.htmlfile-class.html#__init__,Method lxml.etree.iterparse.__init__()=lxml.etree.iterparse-class.html#__init__,Method lxml.etree.iterwalk.__init__()=lxml.etree.iterwalk-class.html#__init__,Method lxml.etree.xmlfile.__init__()=lxml.etree.xmlfile-class.html#__init__,Method lxml.html.CheckboxValues.__init__()=lxml.html.CheckboxValues-class.html#__init__,Method lxml.html.Classes.__init__()=lxml.html.Classes-class.html#__init__,Method lxml.html.FieldsDict.__init__()=lxml.html.FieldsDict-class.html#__init__,Method lxml.html.HTMLParser.__init__()=lxml.html.HTMLParser-class.html#__init__,Method lxml.html.HtmlElementClassLookup.__init__()=lxml.html.HtmlElementClassLookup-class.html#__init__,Method lxml.html.InputGetter.__init__()=lxml.html.InputGetter-class.html#__init__,Method lxml.html.MultipleSelectOptions.__init__()=lxml.html.MultipleSelectOptions-class.html#__init__,Method lxml.html.XHTMLParser.__init__()=lxml.html.XHTMLParser-class.html#__init__,Method lxml.html._MethodFunc.__init__()=lxml.html._MethodFunc-class.html#__init__,Method lxml.html.clean.Cleaner.__init__()=lxml.html.clean.Cleaner-class.html#__init__,Method lxml.html.formfill.DefaultErrorCreator.__init__()=lxml.html.formfill.DefaultErrorCreator-class.html#__init__,Method lxml.html.html5parser.HTMLParser.__init__()=lxml.html.html5parser.HTMLParser-class.html#__init__,Method lxml.html.html5parser.XHTMLParser.__init__()=lxml.html.html5parser.XHTMLParser-class.html#__init__,Method lxml.html.soupparser._PseudoTag.__init__()=lxml.html.soupparser._PseudoTag-class.html#__init__,Method lxml.isoschematron.Schematron.__init__()=lxml.isoschematron.Schematron-class.html#__init__,Method lxml.objectify.ElementMaker.__init__()=lxml.objectify.ElementMaker-class.html#__init__,Method lxml.objectify.ObjectPath.__init__()=lxml.objectify.ObjectPath-class.html#__init__,Method lxml.objectify.ObjectifyElementClassLookup.__init__()=lxml.objectify.ObjectifyElementClassLookup-class.html#__init__,Method lxml.objectify.PyType.__init__()=lxml.objectify.PyType-class.html#__init__,Method lxml.sax.ElementTreeContentHandler.__init__()=lxml.sax.ElementTreeContentHandler-class.html#__init__,Method lxml.sax.ElementTreeProducer.__init__()=lxml.sax.ElementTreeProducer-class.html#__init__,Method lxml.tests.common_imports.LargeFileLike.__init__()=lxml.tests.common_imports.LargeFileLike-class.html#__init__,Method lxml.tests.common_imports.LargeFileLikeUnicode.__init__()=lxml.tests.common_imports.LargeFileLikeUnicode-class.html#__init__,Method lxml.tests.common_imports.SillyFileLike.__init__()=lxml.tests.common_imports.SillyFileLike-class.html#__init__,Method lxml.tests.dummy_http_server.HTTPRequestCollector.__init__()=lxml.tests.dummy_http_server.HTTPRequestCollector-class.html#__init__,Method lxml.tests.test_doctestcompare.DummyInput.__init__()=lxml.tests.test_doctestcompare.DummyInput-class.html#__init__,Method lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.__init__()=lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike-class.html#__init__,Method lxml.tests.test_threading.ThreadPipelineTestCase.Worker.__init__()=lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#__init__,Method lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver.__init__()=lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver-class.html#__init__"><a title="lxml.builder.ElementMaker.__init__
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-2693', 'value', 'link-196');">value</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-2694" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2694', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2695" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-2695', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2522"></a><tt class="py-lineno">2522</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_efactory_subtype"></a><div id="ObjectifyTestCase.test_efactory_subtype-def"><a name="L2523"></a><tt class="py-lineno">2523</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_efactory_subtype-toggle" onclick="return toggle('ObjectifyTestCase.test_efactory_subtype');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_subtype">test_efactory_subtype</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="ObjectifyTestCase.test_efactory_subtype-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_efactory_subtype-expanded"><a name="L2524"></a><tt class="py-lineno">2524</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Attribute</tt><tt class="py-op">(</tt><tt class="py-base-class">objectify</tt><tt class="py-op">.</tt><tt class="py-base-class">ObjectifiedDataElement</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2525"></a><tt class="py-lineno">2525</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2526"></a><tt class="py-lineno">2526</tt>  <tt class="py-line">                <tt id="link-2696" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2696', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2697" class="py-name"><a title="lxml.objectify.ObjectifiedDataElement" class="py-name" href="#" onclick="return doclink('link-2697', 'ObjectifiedDataElement', 'link-309');">ObjectifiedDataElement</a></tt><tt class="py-op">.</tt><tt id="link-2698" class="py-name" targets="Method lxml.builder.ElementMaker.__init__()=lxml.builder.ElementMaker-class.html#__init__,Method lxml.cssselect.CSSSelector.__init__()=lxml.cssselect.CSSSelector-class.html#__init__,Method lxml.doctestcompare._RestoreChecker.__init__()=lxml.doctestcompare._RestoreChecker-class.html#__init__,Method lxml.etree.AttributeBasedElementClassLookup.__init__()=lxml.etree.AttributeBasedElementClassLookup-class.html#__init__,Method lxml.etree.CommentBase.__init__()=lxml.etree.CommentBase-class.html#__init__,Method lxml.etree.DTD.__init__()=lxml.etree.DTD-class.html#__init__,Method lxml.etree.ETCompatXMLParser.__init__()=lxml.etree.ETCompatXMLParser-class.html#__init__,Method lxml.etree.ETXPath.__init__()=lxml.etree.ETXPath-class.html#__init__,Method lxml.etree.ElementBase.__init__()=lxml.etree.ElementBase-class.html#__init__,Method lxml.etree.ElementDefaultClassLookup.__init__()=lxml.etree.ElementDefaultClassLookup-class.html#__init__,Method lxml.etree.ElementNamespaceClassLookup.__init__()=lxml.etree.ElementNamespaceClassLookup-class.html#__init__,Method lxml.etree.EntityBase.__init__()=lxml.etree.EntityBase-class.html#__init__,Method lxml.etree.FallbackElementClassLookup.__init__()=lxml.etree.FallbackElementClassLookup-class.html#__init__,Method lxml.etree.HTMLParser.__init__()=lxml.etree.HTMLParser-class.html#__init__,Method lxml.etree.HTMLPullParser.__init__()=lxml.etree.HTMLPullParser-class.html#__init__,Method lxml.etree.LxmlError.__init__()=lxml.etree.LxmlError-class.html#__init__,Method lxml.etree.PIBase.__init__()=lxml.etree.PIBase-class.html#__init__,Method lxml.etree.ParseError.__init__()=lxml.etree.ParseError-class.html#__init__,Method lxml.etree.PyErrorLog.__init__()=lxml.etree.PyErrorLog-class.html#__init__,Method lxml.etree.QName.__init__()=lxml.etree.QName-class.html#__init__,Method lxml.etree.RelaxNG.__init__()=lxml.etree.RelaxNG-class.html#__init__,Method lxml.etree.Schematron.__init__()=lxml.etree.Schematron-class.html#__init__,Method lxml.etree.TreeBuilder.__init__()=lxml.etree.TreeBuilder-class.html#__init__,Method lxml.etree.XInclude.__init__()=lxml.etree.XInclude-class.html#__init__,Method lxml.etree.XMLParser.__init__()=lxml.etree.XMLParser-class.html#__init__,Method lxml.etree.XMLPullParser.__init__()=lxml.etree.XMLPullParser-class.html#__init__,Method lxml.etree.XMLSchema.__init__()=lxml.etree.XMLSchema-class.html#__init__,Method lxml.etree.XPath.__init__()=lxml.etree.XPath-class.html#__init__,Method lxml.etree.XPathDocumentEvaluator.__init__()=lxml.etree.XPathDocumentEvaluator-class.html#__init__,Method lxml.etree.XPathElementEvaluator.__init__()=lxml.etree.XPathElementEvaluator-class.html#__init__,Method lxml.etree.XSLT.__init__()=lxml.etree.XSLT-class.html#__init__,Method lxml.etree.XSLTAccessControl.__init__()=lxml.etree.XSLTAccessControl-class.html#__init__,Method lxml.etree._BaseErrorLog.__init__()=lxml.etree._BaseErrorLog-class.html#__init__,Method lxml.etree._DomainErrorLog.__init__()=lxml.etree._DomainErrorLog-class.html#__init__,Method lxml.etree._ErrorLog.__init__()=lxml.etree._ErrorLog-class.html#__init__,Method lxml.etree._ListErrorLog.__init__()=lxml.etree._ListErrorLog-class.html#__init__,Method lxml.etree._RotatingErrorLog.__init__()=lxml.etree._RotatingErrorLog-class.html#__init__,Method lxml.etree._TargetParserResult.__init__()=lxml.etree._TargetParserResult-class.html#__init__,Method lxml.etree._XPathEvaluatorBase.__init__()=lxml.etree._XPathEvaluatorBase-class.html#__init__,Method lxml.etree.htmlfile.__init__()=lxml.etree.htmlfile-class.html#__init__,Method lxml.etree.iterparse.__init__()=lxml.etree.iterparse-class.html#__init__,Method lxml.etree.iterwalk.__init__()=lxml.etree.iterwalk-class.html#__init__,Method lxml.etree.xmlfile.__init__()=lxml.etree.xmlfile-class.html#__init__,Method lxml.html.CheckboxValues.__init__()=lxml.html.CheckboxValues-class.html#__init__,Method lxml.html.Classes.__init__()=lxml.html.Classes-class.html#__init__,Method lxml.html.FieldsDict.__init__()=lxml.html.FieldsDict-class.html#__init__,Method lxml.html.HTMLParser.__init__()=lxml.html.HTMLParser-class.html#__init__,Method lxml.html.HtmlElementClassLookup.__init__()=lxml.html.HtmlElementClassLookup-class.html#__init__,Method lxml.html.InputGetter.__init__()=lxml.html.InputGetter-class.html#__init__,Method lxml.html.MultipleSelectOptions.__init__()=lxml.html.MultipleSelectOptions-class.html#__init__,Method lxml.html.XHTMLParser.__init__()=lxml.html.XHTMLParser-class.html#__init__,Method lxml.html._MethodFunc.__init__()=lxml.html._MethodFunc-class.html#__init__,Method lxml.html.clean.Cleaner.__init__()=lxml.html.clean.Cleaner-class.html#__init__,Method lxml.html.formfill.DefaultErrorCreator.__init__()=lxml.html.formfill.DefaultErrorCreator-class.html#__init__,Method lxml.html.html5parser.HTMLParser.__init__()=lxml.html.html5parser.HTMLParser-class.html#__init__,Method lxml.html.html5parser.XHTMLParser.__init__()=lxml.html.html5parser.XHTMLParser-class.html#__init__,Method lxml.html.soupparser._PseudoTag.__init__()=lxml.html.soupparser._PseudoTag-class.html#__init__,Method lxml.isoschematron.Schematron.__init__()=lxml.isoschematron.Schematron-class.html#__init__,Method lxml.objectify.ElementMaker.__init__()=lxml.objectify.ElementMaker-class.html#__init__,Method lxml.objectify.ObjectPath.__init__()=lxml.objectify.ObjectPath-class.html#__init__,Method lxml.objectify.ObjectifyElementClassLookup.__init__()=lxml.objectify.ObjectifyElementClassLookup-class.html#__init__,Method lxml.objectify.PyType.__init__()=lxml.objectify.PyType-class.html#__init__,Method lxml.sax.ElementTreeContentHandler.__init__()=lxml.sax.ElementTreeContentHandler-class.html#__init__,Method lxml.sax.ElementTreeProducer.__init__()=lxml.sax.ElementTreeProducer-class.html#__init__,Method lxml.tests.common_imports.LargeFileLike.__init__()=lxml.tests.common_imports.LargeFileLike-class.html#__init__,Method lxml.tests.common_imports.LargeFileLikeUnicode.__init__()=lxml.tests.common_imports.LargeFileLikeUnicode-class.html#__init__,Method lxml.tests.common_imports.SillyFileLike.__init__()=lxml.tests.common_imports.SillyFileLike-class.html#__init__,Method lxml.tests.dummy_http_server.HTTPRequestCollector.__init__()=lxml.tests.dummy_http_server.HTTPRequestCollector-class.html#__init__,Method lxml.tests.test_doctestcompare.DummyInput.__init__()=lxml.tests.test_doctestcompare.DummyInput-class.html#__init__,Method lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.__init__()=lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike-class.html#__init__,Method lxml.tests.test_threading.ThreadPipelineTestCase.Worker.__init__()=lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#__init__,Method lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver.__init__()=lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver-class.html#__init__"><a title="lxml.builder.ElementMaker.__init__
 lxml.cssselect.CSSSelector.__init__
 lxml.doctestcompare._RestoreChecker.__init__
 lxml.etree.AttributeBasedElementClassLookup.__init__
@@ -5512,170 +5602,170 @@ lxml.tests.dummy_http_server.HTTPRequestCollector.__init__
 lxml.tests.test_doctestcompare.DummyInput.__init__
 lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.__init__
 lxml.tests.test_threading.ThreadPipelineTestCase.Worker.__init__
-lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver.__init__" class="py-name" href="#" onclick="return doclink('link-2663', '__init__', 'link-2663');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
-<a name="L2483"></a><tt class="py-lineno">2483</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2664" class="py-name"><a title="lxml.etree._Element.set
-lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-2664', 'set', 'link-2367');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"datatype"</tt><tt class="py-op">,</tt> <tt class="py-string">"TYPE"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2484"></a><tt class="py-lineno">2484</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2665" class="py-name"><a title="lxml.etree._Element.set
-lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-2665', 'set', 'link-2367');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"range"</tt><tt class="py-op">,</tt> <tt class="py-string">"0.,1."</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L2485"></a><tt class="py-lineno">2485</tt>  <tt class="py-line"> </tt>
-<a name="L2486"></a><tt class="py-lineno">2486</tt>  <tt class="py-line">        <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt class="py-name">Attribute</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L2487"></a><tt class="py-lineno">2487</tt>  <tt class="py-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">attr</tt><tt class="py-op">.</tt><tt id="link-2666" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver.__init__" class="py-name" href="#" onclick="return doclink('link-2698', '__init__', 'link-2698');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L2527"></a><tt class="py-lineno">2527</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2699" class="py-name"><a title="lxml.etree._Element.set
+lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-2699', 'set', 'link-2402');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"datatype"</tt><tt class="py-op">,</tt> <tt class="py-string">"TYPE"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2528"></a><tt class="py-lineno">2528</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2700" class="py-name"><a title="lxml.etree._Element.set
+lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-2700', 'set', 'link-2402');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"range"</tt><tt class="py-op">,</tt> <tt class="py-string">"0.,1."</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L2529"></a><tt class="py-lineno">2529</tt>  <tt class="py-line"> </tt>
+<a name="L2530"></a><tt class="py-lineno">2530</tt>  <tt class="py-line">        <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt class="py-name">Attribute</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2531"></a><tt class="py-lineno">2531</tt>  <tt class="py-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">attr</tt><tt class="py-op">.</tt><tt id="link-2701" 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-2666', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L2488"></a><tt class="py-lineno">2488</tt>  <tt class="py-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">attr</tt><tt class="py-op">.</tt><tt id="link-2667" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2701', 'text', 'link-311');">text</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L2532"></a><tt class="py-lineno">2532</tt>  <tt class="py-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">attr</tt><tt class="py-op">.</tt><tt id="link-2702" 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-2667', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"datatype"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"TYPE"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2489"></a><tt class="py-lineno">2489</tt>  <tt class="py-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">attr</tt><tt class="py-op">.</tt><tt id="link-2668" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2702', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"datatype"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"TYPE"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2533"></a><tt class="py-lineno">2533</tt>  <tt class="py-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">attr</tt><tt class="py-op">.</tt><tt id="link-2703" 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-2668', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"range"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"0.,1."</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2490"></a><tt class="py-lineno">2490</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_XML_base_url_docinfo"></a><div id="ObjectifyTestCase.test_XML_base_url_docinfo-def"><a name="L2491"></a><tt class="py-lineno">2491</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_XML_base_url_docinfo-toggle" onclick="return toggle('ObjectifyTestCase.test_XML_base_url_docinfo');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_XML_base_url_docinfo">test_XML_base_url_docinfo</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="ObjectifyTestCase.test_XML_base_url_docinfo-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_XML_base_url_docinfo-expanded"><a name="L2492"></a><tt class="py-lineno">2492</tt>  <tt class="py-line">        <tt id="link-2669" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2669', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2670" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2670', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2671" 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-2671', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2672" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2672', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;root/&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-2673" 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-2673', 'base_url', 'link-2673');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2493"></a><tt class="py-lineno">2493</tt>  <tt class="py-line">        <tt id="link-2674" class="py-name" targets="Variable lxml.etree._ElementTree.docinfo=lxml.etree._ElementTree-class.html#docinfo"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2674', 'docinfo', 'link-2674');">docinfo</a></tt> <tt class="py-op">=</tt> <tt id="link-2675" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2675', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2676" class="py-name" targets="Method lxml.etree._Element.getroottree()=lxml.etree._Element-class.html#getroottree"><a title="lxml.etree._Element.getroottree" class="py-name" href="#" onclick="return doclink('link-2676', 'getroottree', 'link-2676');">getroottree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2677" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2677', 'docinfo', 'link-2674');">docinfo</a></tt> </tt>
-<a name="L2494"></a><tt class="py-lineno">2494</tt>  <tt class="py-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-2678" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2678', 'docinfo', 'link-2674');">docinfo</a></tt><tt class="py-op">.</tt><tt id="link-2679" class="py-name" targets="Variable lxml.etree.DocInfo.URL=lxml.etree.DocInfo-class.html#URL"><a title="lxml.etree.DocInfo.URL" class="py-name" href="#" onclick="return doclink('link-2679', 'URL', 'link-2679');">URL</a></tt><tt class="py-op">,</tt> <tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2495"></a><tt class="py-lineno">2495</tt>  <tt class="py-line">  </tt>
-<a name="ObjectifyTestCase.test_XML_set_base_url_docinfo"></a><div id="ObjectifyTestCase.test_XML_set_base_url_docinfo-def"><a name="L2496"></a><tt class="py-lineno">2496</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_XML_set_base_url_docinfo-toggle" onclick="return toggle('ObjectifyTestCase.test_XML_set_base_url_docinfo');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_XML_set_base_url_docinfo">test_XML_set_base_url_docinfo</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="ObjectifyTestCase.test_XML_set_base_url_docinfo-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_XML_set_base_url_docinfo-expanded"><a name="L2497"></a><tt class="py-lineno">2497</tt>  <tt class="py-line">        <tt id="link-2680" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2680', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2681" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2681', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2682" 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-2682', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2683" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2683', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;root/&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-2684" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-2684', 'base_url', 'link-2673');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2498"></a><tt class="py-lineno">2498</tt>  <tt class="py-line">        <tt id="link-2685" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2685', 'docinfo', 'link-2674');">docinfo</a></tt> <tt class="py-op">=</tt> <tt id="link-2686" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2686', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2687" class="py-name"><a title="lxml.etree._Element.getroottree" class="py-name" href="#" onclick="return doclink('link-2687', 'getroottree', 'link-2676');">getroottree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2688" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2688', 'docinfo', 'link-2674');">docinfo</a></tt> </tt>
-<a name="L2499"></a><tt class="py-lineno">2499</tt>  <tt class="py-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-2689" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2689', 'docinfo', 'link-2674');">docinfo</a></tt><tt class="py-op">.</tt><tt id="link-2690" class="py-name"><a title="lxml.etree.DocInfo.URL" class="py-name" href="#" onclick="return doclink('link-2690', 'URL', 'link-2679');">URL</a></tt><tt class="py-op">,</tt> <tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2500"></a><tt class="py-lineno">2500</tt>  <tt class="py-line">        <tt id="link-2691" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2691', 'docinfo', 'link-2674');">docinfo</a></tt><tt class="py-op">.</tt><tt id="link-2692" class="py-name"><a title="lxml.etree.DocInfo.URL" class="py-name" href="#" onclick="return doclink('link-2692', 'URL', 'link-2679');">URL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"https://secret/url"</tt> </tt>
-<a name="L2501"></a><tt class="py-lineno">2501</tt>  <tt class="py-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-2693" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2693', 'docinfo', 'link-2674');">docinfo</a></tt><tt class="py-op">.</tt><tt id="link-2694" class="py-name"><a title="lxml.etree.DocInfo.URL" class="py-name" href="#" onclick="return doclink('link-2694', 'URL', 'link-2679');">URL</a></tt><tt class="py-op">,</tt> <tt class="py-string">"https://secret/url"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2502"></a><tt class="py-lineno">2502</tt>  <tt class="py-line">  </tt>
-<a name="ObjectifyTestCase.test_parse_stringio_base_url"></a><div id="ObjectifyTestCase.test_parse_stringio_base_url-def"><a name="L2503"></a><tt class="py-lineno">2503</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_parse_stringio_base_url-toggle" onclick="return toggle('ObjectifyTestCase.test_parse_stringio_base_url');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_parse_stringio_base_url">test_parse_stringio_base_url</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="ObjectifyTestCase.test_parse_stringio_base_url-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_parse_stringio_base_url-expanded"><a name="L2504"></a><tt class="py-lineno">2504</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2695" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2695', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2696" class="py-name" targets="Method lxml.etree._ElementTree.parse()=lxml.etree._ElementTree-class.html#parse,Function lxml.etree.parse()=lxml.etree-module.html#parse,Function lxml.html.ElementSoup.parse()=lxml.html.ElementSoup-module.html#parse,Function lxml.html.html5parser.parse()=lxml.html.html5parser-module.html#parse,Function lxml.html.soupparser.parse()=lxml.html.soupparser-module.html#parse,Function lxml.objectify.parse()=lxml.objectify-module.html#parse,Method lxml.tests.common_imports.HelperTestCase.parse()=lxml.tests.common_imports.HelperTestCase-class.html#parse"><a title="lxml.etree._ElementTree.parse
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2703', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"range"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"0.,1."</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2534"></a><tt class="py-lineno">2534</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_XML_base_url_docinfo"></a><div id="ObjectifyTestCase.test_XML_base_url_docinfo-def"><a name="L2535"></a><tt class="py-lineno">2535</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_XML_base_url_docinfo-toggle" onclick="return toggle('ObjectifyTestCase.test_XML_base_url_docinfo');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_XML_base_url_docinfo">test_XML_base_url_docinfo</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="ObjectifyTestCase.test_XML_base_url_docinfo-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_XML_base_url_docinfo-expanded"><a name="L2536"></a><tt class="py-lineno">2536</tt>  <tt class="py-line">        <tt id="link-2704" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2704', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2705" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2705', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2706" 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-2706', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2707" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2707', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;root/&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-2708" 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-2708', 'base_url', 'link-2708');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2537"></a><tt class="py-lineno">2537</tt>  <tt class="py-line">        <tt id="link-2709" class="py-name" targets="Variable lxml.etree._ElementTree.docinfo=lxml.etree._ElementTree-class.html#docinfo"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2709', 'docinfo', 'link-2709');">docinfo</a></tt> <tt class="py-op">=</tt> <tt id="link-2710" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2710', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2711" class="py-name" targets="Method lxml.etree._Element.getroottree()=lxml.etree._Element-class.html#getroottree"><a title="lxml.etree._Element.getroottree" class="py-name" href="#" onclick="return doclink('link-2711', 'getroottree', 'link-2711');">getroottree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2712" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2712', 'docinfo', 'link-2709');">docinfo</a></tt> </tt>
+<a name="L2538"></a><tt class="py-lineno">2538</tt>  <tt class="py-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-2713" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2713', 'docinfo', 'link-2709');">docinfo</a></tt><tt class="py-op">.</tt><tt id="link-2714" class="py-name" targets="Variable lxml.etree.DocInfo.URL=lxml.etree.DocInfo-class.html#URL"><a title="lxml.etree.DocInfo.URL" class="py-name" href="#" onclick="return doclink('link-2714', 'URL', 'link-2714');">URL</a></tt><tt class="py-op">,</tt> <tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2539"></a><tt class="py-lineno">2539</tt>  <tt class="py-line">  </tt>
+<a name="ObjectifyTestCase.test_XML_set_base_url_docinfo"></a><div id="ObjectifyTestCase.test_XML_set_base_url_docinfo-def"><a name="L2540"></a><tt class="py-lineno">2540</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_XML_set_base_url_docinfo-toggle" onclick="return toggle('ObjectifyTestCase.test_XML_set_base_url_docinfo');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_XML_set_base_url_docinfo">test_XML_set_base_url_docinfo</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="ObjectifyTestCase.test_XML_set_base_url_docinfo-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_XML_set_base_url_docinfo-expanded"><a name="L2541"></a><tt class="py-lineno">2541</tt>  <tt class="py-line">        <tt id="link-2715" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2715', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2716" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2716', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2717" 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-2717', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2718" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2718', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;root/&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-2719" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-2719', 'base_url', 'link-2708');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2542"></a><tt class="py-lineno">2542</tt>  <tt class="py-line">        <tt id="link-2720" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2720', 'docinfo', 'link-2709');">docinfo</a></tt> <tt class="py-op">=</tt> <tt id="link-2721" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2721', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2722" class="py-name"><a title="lxml.etree._Element.getroottree" class="py-name" href="#" onclick="return doclink('link-2722', 'getroottree', 'link-2711');">getroottree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2723" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2723', 'docinfo', 'link-2709');">docinfo</a></tt> </tt>
+<a name="L2543"></a><tt class="py-lineno">2543</tt>  <tt class="py-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-2724" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2724', 'docinfo', 'link-2709');">docinfo</a></tt><tt class="py-op">.</tt><tt id="link-2725" class="py-name"><a title="lxml.etree.DocInfo.URL" class="py-name" href="#" onclick="return doclink('link-2725', 'URL', 'link-2714');">URL</a></tt><tt class="py-op">,</tt> <tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2544"></a><tt class="py-lineno">2544</tt>  <tt class="py-line">        <tt id="link-2726" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2726', 'docinfo', 'link-2709');">docinfo</a></tt><tt class="py-op">.</tt><tt id="link-2727" class="py-name"><a title="lxml.etree.DocInfo.URL" class="py-name" href="#" onclick="return doclink('link-2727', 'URL', 'link-2714');">URL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"https://secret/url"</tt> </tt>
+<a name="L2545"></a><tt class="py-lineno">2545</tt>  <tt class="py-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-2728" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2728', 'docinfo', 'link-2709');">docinfo</a></tt><tt class="py-op">.</tt><tt id="link-2729" class="py-name"><a title="lxml.etree.DocInfo.URL" class="py-name" href="#" onclick="return doclink('link-2729', 'URL', 'link-2714');">URL</a></tt><tt class="py-op">,</tt> <tt class="py-string">"https://secret/url"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2546"></a><tt class="py-lineno">2546</tt>  <tt class="py-line">  </tt>
+<a name="ObjectifyTestCase.test_parse_stringio_base_url"></a><div id="ObjectifyTestCase.test_parse_stringio_base_url-def"><a name="L2547"></a><tt class="py-lineno">2547</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_parse_stringio_base_url-toggle" onclick="return toggle('ObjectifyTestCase.test_parse_stringio_base_url');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_parse_stringio_base_url">test_parse_stringio_base_url</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="ObjectifyTestCase.test_parse_stringio_base_url-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_parse_stringio_base_url-expanded"><a name="L2548"></a><tt class="py-lineno">2548</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2730" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2730', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2731" class="py-name" targets="Method lxml.etree._ElementTree.parse()=lxml.etree._ElementTree-class.html#parse,Function lxml.etree.parse()=lxml.etree-module.html#parse,Function lxml.html.ElementSoup.parse()=lxml.html.ElementSoup-module.html#parse,Function lxml.html.html5parser.parse()=lxml.html.html5parser-module.html#parse,Function lxml.html.soupparser.parse()=lxml.html.soupparser-module.html#parse,Function lxml.objectify.parse()=lxml.objectify-module.html#parse,Method lxml.tests.common_imports.HelperTestCase.parse()=lxml.tests.common_imports.HelperTestCase-class.html#parse"><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-2696', 'parse', 'link-2696');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">"&lt;root/&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-2697" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-2697', 'base_url', 'link-2673');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2505"></a><tt class="py-lineno">2505</tt>  <tt class="py-line">        <tt id="link-2698" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2698', 'docinfo', 'link-2674');">docinfo</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2699" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2699', 'docinfo', 'link-2674');">docinfo</a></tt> </tt>
-<a name="L2506"></a><tt class="py-lineno">2506</tt>  <tt class="py-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-2700" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2700', 'docinfo', 'link-2674');">docinfo</a></tt><tt class="py-op">.</tt><tt id="link-2701" class="py-name"><a title="lxml.etree.DocInfo.URL" class="py-name" href="#" onclick="return doclink('link-2701', 'URL', 'link-2679');">URL</a></tt><tt class="py-op">,</tt> <tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2507"></a><tt class="py-lineno">2507</tt>  <tt class="py-line">  </tt>
-<a name="ObjectifyTestCase.test_parse_base_url_docinfo"></a><div id="ObjectifyTestCase.test_parse_base_url_docinfo-def"><a name="L2508"></a><tt class="py-lineno">2508</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_parse_base_url_docinfo-toggle" onclick="return toggle('ObjectifyTestCase.test_parse_base_url_docinfo');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_parse_base_url_docinfo">test_parse_base_url_docinfo</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="ObjectifyTestCase.test_parse_base_url_docinfo-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_parse_base_url_docinfo-expanded"><a name="L2509"></a><tt class="py-lineno">2509</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2702" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2702', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2703" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2731', 'parse', 'link-2731');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">"&lt;root/&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-2732" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-2732', 'base_url', 'link-2708');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2549"></a><tt class="py-lineno">2549</tt>  <tt class="py-line">        <tt id="link-2733" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2733', 'docinfo', 'link-2709');">docinfo</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2734" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2734', 'docinfo', 'link-2709');">docinfo</a></tt> </tt>
+<a name="L2550"></a><tt class="py-lineno">2550</tt>  <tt class="py-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-2735" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2735', 'docinfo', 'link-2709');">docinfo</a></tt><tt class="py-op">.</tt><tt id="link-2736" class="py-name"><a title="lxml.etree.DocInfo.URL" class="py-name" href="#" onclick="return doclink('link-2736', 'URL', 'link-2714');">URL</a></tt><tt class="py-op">,</tt> <tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2551"></a><tt class="py-lineno">2551</tt>  <tt class="py-line">  </tt>
+<a name="ObjectifyTestCase.test_parse_base_url_docinfo"></a><div id="ObjectifyTestCase.test_parse_base_url_docinfo-def"><a name="L2552"></a><tt class="py-lineno">2552</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_parse_base_url_docinfo-toggle" onclick="return toggle('ObjectifyTestCase.test_parse_base_url_docinfo');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_parse_base_url_docinfo">test_parse_base_url_docinfo</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="ObjectifyTestCase.test_parse_base_url_docinfo-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_parse_base_url_docinfo-expanded"><a name="L2553"></a><tt class="py-lineno">2553</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2737" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2737', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2738" 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-2703', 'parse', 'link-2696');">parse</a></tt><tt class="py-op">(</tt><tt id="link-2704" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2704', 'fileInTestDir', 'link-11');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'include/test_xinclude.xml'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2510"></a><tt class="py-lineno">2510</tt>  <tt class="py-line">                               <tt id="link-2705" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-2705', 'base_url', 'link-2673');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2511"></a><tt class="py-lineno">2511</tt>  <tt class="py-line">        <tt id="link-2706" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2706', 'docinfo', 'link-2674');">docinfo</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2707" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2707', 'docinfo', 'link-2674');">docinfo</a></tt> </tt>
-<a name="L2512"></a><tt class="py-lineno">2512</tt>  <tt class="py-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-2708" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2708', 'docinfo', 'link-2674');">docinfo</a></tt><tt class="py-op">.</tt><tt id="link-2709" class="py-name"><a title="lxml.etree.DocInfo.URL" class="py-name" href="#" onclick="return doclink('link-2709', 'URL', 'link-2679');">URL</a></tt><tt class="py-op">,</tt> <tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2513"></a><tt class="py-lineno">2513</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_xml_base"></a><div id="ObjectifyTestCase.test_xml_base-def"><a name="L2514"></a><tt class="py-lineno">2514</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_xml_base-toggle" onclick="return toggle('ObjectifyTestCase.test_xml_base');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xml_base">test_xml_base</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="ObjectifyTestCase.test_xml_base-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_xml_base-expanded"><a name="L2515"></a><tt class="py-lineno">2515</tt>  <tt class="py-line">        <tt id="link-2710" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2710', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2711" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2711', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2712" 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-2712', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2713" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2713', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;root/&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-2714" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-2714', 'base_url', 'link-2673');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2516"></a><tt class="py-lineno">2516</tt>  <tt class="py-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-2715" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2715', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2716" class="py-name" targets="Variable lxml.etree._Element.base=lxml.etree._Element-class.html#base"><a title="lxml.etree._Element.base" class="py-name" href="#" onclick="return doclink('link-2716', 'base', 'link-2716');">base</a></tt><tt class="py-op">,</tt> <tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2517"></a><tt class="py-lineno">2517</tt>  <tt class="py-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="L2518"></a><tt class="py-lineno">2518</tt>  <tt class="py-line">            <tt id="link-2717" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2717', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2718" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2738', 'parse', 'link-2731');">parse</a></tt><tt class="py-op">(</tt><tt id="link-2739" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2739', 'fileInTestDir', 'link-11');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'include/test_xinclude.xml'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2554"></a><tt class="py-lineno">2554</tt>  <tt class="py-line">                               <tt id="link-2740" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-2740', 'base_url', 'link-2708');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2555"></a><tt class="py-lineno">2555</tt>  <tt class="py-line">        <tt id="link-2741" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2741', 'docinfo', 'link-2709');">docinfo</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2742" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2742', 'docinfo', 'link-2709');">docinfo</a></tt> </tt>
+<a name="L2556"></a><tt class="py-lineno">2556</tt>  <tt class="py-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-2743" class="py-name"><a title="lxml.etree._ElementTree.docinfo" class="py-name" href="#" onclick="return doclink('link-2743', 'docinfo', 'link-2709');">docinfo</a></tt><tt class="py-op">.</tt><tt id="link-2744" class="py-name"><a title="lxml.etree.DocInfo.URL" class="py-name" href="#" onclick="return doclink('link-2744', 'URL', 'link-2714');">URL</a></tt><tt class="py-op">,</tt> <tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2557"></a><tt class="py-lineno">2557</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_xml_base"></a><div id="ObjectifyTestCase.test_xml_base-def"><a name="L2558"></a><tt class="py-lineno">2558</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_xml_base-toggle" onclick="return toggle('ObjectifyTestCase.test_xml_base');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xml_base">test_xml_base</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="ObjectifyTestCase.test_xml_base-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_xml_base-expanded"><a name="L2559"></a><tt class="py-lineno">2559</tt>  <tt class="py-line">        <tt id="link-2745" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2745', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2746" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2746', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2747" 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-2747', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2748" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2748', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;root/&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-2749" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-2749', 'base_url', 'link-2708');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2560"></a><tt class="py-lineno">2560</tt>  <tt class="py-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-2750" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2750', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2751" class="py-name" targets="Variable lxml.etree._Element.base=lxml.etree._Element-class.html#base"><a title="lxml.etree._Element.base" class="py-name" href="#" onclick="return doclink('link-2751', 'base', 'link-2751');">base</a></tt><tt class="py-op">,</tt> <tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2561"></a><tt class="py-lineno">2561</tt>  <tt class="py-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="L2562"></a><tt class="py-lineno">2562</tt>  <tt class="py-line">            <tt id="link-2752" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2752', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2753" 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-2718', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{http://www.w3.org/XML/1998/namespace}base'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L2519"></a><tt class="py-lineno">2519</tt>  <tt class="py-line">        <tt id="link-2719" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2719', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2720" class="py-name"><a title="lxml.etree._Element.base" class="py-name" href="#" onclick="return doclink('link-2720', 'base', 'link-2716');">base</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"https://secret/url"</tt> </tt>
-<a name="L2520"></a><tt class="py-lineno">2520</tt>  <tt class="py-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-2721" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2721', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2722" class="py-name"><a title="lxml.etree._Element.base" class="py-name" href="#" onclick="return doclink('link-2722', 'base', 'link-2716');">base</a></tt><tt class="py-op">,</tt> <tt class="py-string">"https://secret/url"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2521"></a><tt class="py-lineno">2521</tt>  <tt class="py-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="L2522"></a><tt class="py-lineno">2522</tt>  <tt class="py-line">            <tt id="link-2723" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2723', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2724" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2753', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{http://www.w3.org/XML/1998/namespace}base'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L2563"></a><tt class="py-lineno">2563</tt>  <tt class="py-line">        <tt id="link-2754" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2754', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2755" class="py-name"><a title="lxml.etree._Element.base" class="py-name" href="#" onclick="return doclink('link-2755', 'base', 'link-2751');">base</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"https://secret/url"</tt> </tt>
+<a name="L2564"></a><tt class="py-lineno">2564</tt>  <tt class="py-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-2756" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2756', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2757" class="py-name"><a title="lxml.etree._Element.base" class="py-name" href="#" onclick="return doclink('link-2757', 'base', 'link-2751');">base</a></tt><tt class="py-op">,</tt> <tt class="py-string">"https://secret/url"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2565"></a><tt class="py-lineno">2565</tt>  <tt class="py-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="L2566"></a><tt class="py-lineno">2566</tt>  <tt class="py-line">            <tt id="link-2758" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2758', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2759" 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-2724', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{http://www.w3.org/XML/1998/namespace}base'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2523"></a><tt class="py-lineno">2523</tt>  <tt class="py-line">            <tt class="py-string">"https://secret/url"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2524"></a><tt class="py-lineno">2524</tt>  <tt class="py-line">  </tt>
-<a name="ObjectifyTestCase.test_xml_base_attribute"></a><div id="ObjectifyTestCase.test_xml_base_attribute-def"><a name="L2525"></a><tt class="py-lineno">2525</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_xml_base_attribute-toggle" onclick="return toggle('ObjectifyTestCase.test_xml_base_attribute');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xml_base_attribute">test_xml_base_attribute</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="ObjectifyTestCase.test_xml_base_attribute-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_xml_base_attribute-expanded"><a name="L2526"></a><tt class="py-lineno">2526</tt>  <tt class="py-line">        <tt id="link-2725" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2725', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2726" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2726', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2727" class="py-name"><a title="lxml.etree.XML
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2759', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{http://www.w3.org/XML/1998/namespace}base'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2567"></a><tt class="py-lineno">2567</tt>  <tt class="py-line">            <tt class="py-string">"https://secret/url"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2568"></a><tt class="py-lineno">2568</tt>  <tt class="py-line">  </tt>
+<a name="ObjectifyTestCase.test_xml_base_attribute"></a><div id="ObjectifyTestCase.test_xml_base_attribute-def"><a name="L2569"></a><tt class="py-lineno">2569</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_xml_base_attribute-toggle" onclick="return toggle('ObjectifyTestCase.test_xml_base_attribute');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xml_base_attribute">test_xml_base_attribute</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="ObjectifyTestCase.test_xml_base_attribute-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_xml_base_attribute-expanded"><a name="L2570"></a><tt class="py-lineno">2570</tt>  <tt class="py-line">        <tt id="link-2760" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2760', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2761" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2761', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2762" 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-2727', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2728" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2728', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;root/&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-2729" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-2729', 'base_url', 'link-2673');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2527"></a><tt class="py-lineno">2527</tt>  <tt class="py-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-2730" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2730', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2731" class="py-name"><a title="lxml.etree._Element.base" class="py-name" href="#" onclick="return doclink('link-2731', 'base', 'link-2716');">base</a></tt><tt class="py-op">,</tt> <tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2528"></a><tt class="py-lineno">2528</tt>  <tt class="py-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="L2529"></a><tt class="py-lineno">2529</tt>  <tt class="py-line">            <tt id="link-2732" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2732', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2733" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2762', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2763" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2763', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;root/&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-2764" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-2764', 'base_url', 'link-2708');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2571"></a><tt class="py-lineno">2571</tt>  <tt class="py-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-2765" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2765', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2766" class="py-name"><a title="lxml.etree._Element.base" class="py-name" href="#" onclick="return doclink('link-2766', 'base', 'link-2751');">base</a></tt><tt class="py-op">,</tt> <tt class="py-string">"http://no/such/url"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2572"></a><tt class="py-lineno">2572</tt>  <tt class="py-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="L2573"></a><tt class="py-lineno">2573</tt>  <tt class="py-line">            <tt id="link-2767" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2767', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2768" 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-2733', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{http://www.w3.org/XML/1998/namespace}base'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L2530"></a><tt class="py-lineno">2530</tt>  <tt class="py-line">        <tt id="link-2734" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2734', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2735" class="py-name"><a title="lxml.etree._Element.set
-lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-2735', 'set', 'link-2367');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'{http://www.w3.org/XML/1998/namespace}base'</tt><tt class="py-op">,</tt> </tt>
-<a name="L2531"></a><tt class="py-lineno">2531</tt>  <tt class="py-line">                 <tt class="py-string">"https://secret/url"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2532"></a><tt class="py-lineno">2532</tt>  <tt class="py-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-2736" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2736', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2737" class="py-name"><a title="lxml.etree._Element.base" class="py-name" href="#" onclick="return doclink('link-2737', 'base', 'link-2716');">base</a></tt><tt class="py-op">,</tt> <tt class="py-string">"https://secret/url"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2533"></a><tt class="py-lineno">2533</tt>  <tt class="py-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="L2534"></a><tt class="py-lineno">2534</tt>  <tt class="py-line">            <tt id="link-2738" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2738', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2739" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2768', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{http://www.w3.org/XML/1998/namespace}base'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L2574"></a><tt class="py-lineno">2574</tt>  <tt class="py-line">        <tt id="link-2769" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2769', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2770" class="py-name"><a title="lxml.etree._Element.set
+lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-2770', 'set', 'link-2402');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'{http://www.w3.org/XML/1998/namespace}base'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2575"></a><tt class="py-lineno">2575</tt>  <tt class="py-line">                 <tt class="py-string">"https://secret/url"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2576"></a><tt class="py-lineno">2576</tt>  <tt class="py-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-2771" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2771', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2772" class="py-name"><a title="lxml.etree._Element.base" class="py-name" href="#" onclick="return doclink('link-2772', 'base', 'link-2751');">base</a></tt><tt class="py-op">,</tt> <tt class="py-string">"https://secret/url"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2577"></a><tt class="py-lineno">2577</tt>  <tt class="py-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="L2578"></a><tt class="py-lineno">2578</tt>  <tt class="py-line">            <tt id="link-2773" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2773', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt id="link-2774" 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-2739', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{http://www.w3.org/XML/1998/namespace}base'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2535"></a><tt class="py-lineno">2535</tt>  <tt class="py-line">            <tt class="py-string">"https://secret/url"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2536"></a><tt class="py-lineno">2536</tt>  <tt class="py-line"> </tt>
-<a name="ObjectifyTestCase.test_standard_lookup"></a><div id="ObjectifyTestCase.test_standard_lookup-def"><a name="L2537"></a><tt class="py-lineno">2537</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_standard_lookup-toggle" onclick="return toggle('ObjectifyTestCase.test_standard_lookup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_standard_lookup">test_standard_lookup</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="ObjectifyTestCase.test_standard_lookup-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_standard_lookup-expanded"><a name="L2538"></a><tt class="py-lineno">2538</tt>  <tt class="py-line">        <tt id="link-2740" 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-2740', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2741" 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-2741', 'XML', 'link-63');">XML</a></tt> </tt>
-<a name="L2539"></a><tt class="py-lineno">2539</tt>  <tt class="py-line"> </tt>
-<a name="L2540"></a><tt class="py-lineno">2540</tt>  <tt class="py-line">        <tt id="link-2742" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-2742', 'xml', 'link-64');">xml</a></tt> <tt class="py-op">=</tt> <tt id="link-2743" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2743', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L2541"></a><tt class="py-lineno">2541</tt>  <tt class="py-line"><tt class="py-string">        &lt;root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;</tt> </tt>
-<a name="L2542"></a><tt class="py-lineno">2542</tt>  <tt class="py-line"><tt class="py-string">          &lt;i&gt;5&lt;/i&gt;</tt> </tt>
-<a name="L2543"></a><tt class="py-lineno">2543</tt>  <tt class="py-line"><tt class="py-string">          &lt;i&gt;-5&lt;/i&gt;</tt> </tt>
-<a name="L2544"></a><tt class="py-lineno">2544</tt>  <tt class="py-line"><tt class="py-string">          &lt;l&gt;4294967296&lt;/l&gt;</tt> </tt>
-<a name="L2545"></a><tt class="py-lineno">2545</tt>  <tt class="py-line"><tt class="py-string">          &lt;l&gt;-4294967296&lt;/l&gt;</tt> </tt>
-<a name="L2546"></a><tt class="py-lineno">2546</tt>  <tt class="py-line"><tt class="py-string">          &lt;f&gt;1.1&lt;/f&gt;</tt> </tt>
-<a name="L2547"></a><tt class="py-lineno">2547</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;true&lt;/b&gt;</tt> </tt>
-<a name="L2548"></a><tt class="py-lineno">2548</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;false&lt;/b&gt;</tt> </tt>
-<a name="L2549"></a><tt class="py-lineno">2549</tt>  <tt class="py-line"><tt class="py-string">          &lt;s&gt;Strange things happen, where strings collide&lt;/s&gt;</tt> </tt>
-<a name="L2550"></a><tt class="py-lineno">2550</tt>  <tt class="py-line"><tt class="py-string">          &lt;s&gt;True&lt;/s&gt;</tt> </tt>
-<a name="L2551"></a><tt class="py-lineno">2551</tt>  <tt class="py-line"><tt class="py-string">          &lt;s&gt;False&lt;/s&gt;</tt> </tt>
-<a name="L2552"></a><tt class="py-lineno">2552</tt>  <tt class="py-line"><tt class="py-string">          &lt;s&gt;t&lt;/s&gt;</tt> </tt>
-<a name="L2553"></a><tt class="py-lineno">2553</tt>  <tt class="py-line"><tt class="py-string">          &lt;s&gt;f&lt;/s&gt;</tt> </tt>
-<a name="L2554"></a><tt class="py-lineno">2554</tt>  <tt class="py-line"><tt class="py-string">          &lt;s&gt;&lt;/s&gt;</tt> </tt>
-<a name="L2555"></a><tt class="py-lineno">2555</tt>  <tt class="py-line"><tt class="py-string">          &lt;s&gt;None&lt;/s&gt;</tt> </tt>
-<a name="L2556"></a><tt class="py-lineno">2556</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
-<a name="L2557"></a><tt class="py-lineno">2557</tt>  <tt class="py-line"><tt class="py-string">        &lt;/root&gt;</tt> </tt>
-<a name="L2558"></a><tt class="py-lineno">2558</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
-<a name="L2559"></a><tt class="py-lineno">2559</tt>  <tt class="py-line">        <tt id="link-2744" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2744', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2745" 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-2745', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2746" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-2746', 'xml', 'link-64');">xml</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2560"></a><tt class="py-lineno">2560</tt>  <tt class="py-line"> </tt>
-<a name="L2561"></a><tt class="py-lineno">2561</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt id="link-2747" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2747', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">i</tt><tt class="py-op">:</tt> </tt>
-<a name="L2562"></a><tt class="py-lineno">2562</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt id="link-2748" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2748', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2749" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-2749', 'IntElement', 'link-35');">IntElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2563"></a><tt class="py-lineno">2563</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">l</tt> <tt class="py-keyword">in</tt> <tt id="link-2750" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2750', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">l</tt><tt class="py-op">:</tt> </tt>
-<a name="L2564"></a><tt class="py-lineno">2564</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt> <tt id="link-2751" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2751', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2752" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-2752', 'IntElement', 'link-35');">IntElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2565"></a><tt class="py-lineno">2565</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">f</tt> <tt class="py-keyword">in</tt> <tt id="link-2753" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2753', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">:</tt> </tt>
-<a name="L2566"></a><tt class="py-lineno">2566</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-2754" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2754', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2755" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-2755', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt>   </tt>
-<a name="L2567"></a><tt class="py-lineno">2567</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">b</tt> <tt class="py-keyword">in</tt> <tt id="link-2756" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2756', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">:</tt> </tt>
-<a name="L2568"></a><tt class="py-lineno">2568</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt id="link-2757" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2757', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2758" class="py-name"><a title="lxml.objectify.BoolElement" class="py-name" href="#" onclick="return doclink('link-2758', 'BoolElement', 'link-39');">BoolElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2569"></a><tt class="py-lineno">2569</tt>  <tt class="py-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">True</tt><tt class="py-op">,</tt>  <tt id="link-2759" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2759', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L2570"></a><tt class="py-lineno">2570</tt>  <tt class="py-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">False</tt><tt class="py-op">,</tt> <tt id="link-2760" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2760', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L2571"></a><tt class="py-lineno">2571</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt id="link-2761" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2761', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">s</tt><tt class="py-op">:</tt> </tt>
-<a name="L2572"></a><tt class="py-lineno">2572</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt id="link-2762" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2762', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2763" class="py-name"><a title="lxml.objectify.StringElement" class="py-name" href="#" onclick="return doclink('link-2763', 'StringElement', 'link-41');">StringElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2573"></a><tt class="py-lineno">2573</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2764" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2764', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">,</tt> <tt id="link-2765" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2765', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2766" class="py-name"><a title="lxml.objectify.NoneElement" class="py-name" href="#" onclick="return doclink('link-2766', 'NoneElement', 'link-353');">NoneElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2574"></a><tt class="py-lineno">2574</tt>  <tt class="py-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-2767" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2767', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L2575"></a><tt class="py-lineno">2575</tt>  <tt class="py-line"> </tt>
-<a name="test_suite"></a><div id="test_suite-def"><a name="L2576"></a><tt class="py-lineno">2576</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_objectify-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="L2577"></a><tt class="py-lineno">2577</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="L2578"></a><tt class="py-lineno">2578</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-2768" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase" class="py-name" href="#" onclick="return doclink('link-2768', 'ObjectifyTestCase', 'link-66');">ObjectifyTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2579"></a><tt class="py-lineno">2579</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-name">doctest</tt><tt class="py-op">.</tt><tt class="py-name">DocTestSuite</tt><tt class="py-op">(</tt><tt id="link-2769" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2769', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2580"></a><tt class="py-lineno">2580</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version_info</tt> <tt class="py-op">&gt;=</tt> <tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L2581"></a><tt class="py-lineno">2581</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="L2582"></a><tt class="py-lineno">2582</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt id="link-2770" class="py-name"><a title="lxml.tests.common_imports.make_doctest" class="py-name" href="#" onclick="return doclink('link-2770', 'make_doctest', 'link-15');">make_doctest</a></tt><tt class="py-op">(</tt><tt class="py-string">'../../../doc/objectify.txt'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2583"></a><tt class="py-lineno">2583</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">suite</tt> </tt>
-</div><a name="L2584"></a><tt class="py-lineno">2584</tt>  <tt class="py-line"> </tt>
-<a name="L2585"></a><tt class="py-lineno">2585</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="L2586"></a><tt class="py-lineno">2586</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="L2587"></a><tt class="py-lineno">2587</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2774', 'get', 'link-325');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{http://www.w3.org/XML/1998/namespace}base'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2579"></a><tt class="py-lineno">2579</tt>  <tt class="py-line">            <tt class="py-string">"https://secret/url"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2580"></a><tt class="py-lineno">2580</tt>  <tt class="py-line"> </tt>
+<a name="ObjectifyTestCase.test_standard_lookup"></a><div id="ObjectifyTestCase.test_standard_lookup-def"><a name="L2581"></a><tt class="py-lineno">2581</tt> <a class="py-toggle" href="#" id="ObjectifyTestCase.test_standard_lookup-toggle" onclick="return toggle('ObjectifyTestCase.test_standard_lookup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_standard_lookup">test_standard_lookup</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="ObjectifyTestCase.test_standard_lookup-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ObjectifyTestCase.test_standard_lookup-expanded"><a name="L2582"></a><tt class="py-lineno">2582</tt>  <tt class="py-line">        <tt id="link-2775" 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-2775', 'XML', 'link-63');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2776" 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-2776', 'XML', 'link-63');">XML</a></tt> </tt>
+<a name="L2583"></a><tt class="py-lineno">2583</tt>  <tt class="py-line"> </tt>
+<a name="L2584"></a><tt class="py-lineno">2584</tt>  <tt class="py-line">        <tt id="link-2777" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-2777', 'xml', 'link-64');">xml</a></tt> <tt class="py-op">=</tt> <tt id="link-2778" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2778', '_bytes', 'link-17');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L2585"></a><tt class="py-lineno">2585</tt>  <tt class="py-line"><tt class="py-string">        &lt;root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;</tt> </tt>
+<a name="L2586"></a><tt class="py-lineno">2586</tt>  <tt class="py-line"><tt class="py-string">          &lt;i&gt;5&lt;/i&gt;</tt> </tt>
+<a name="L2587"></a><tt class="py-lineno">2587</tt>  <tt class="py-line"><tt class="py-string">          &lt;i&gt;-5&lt;/i&gt;</tt> </tt>
+<a name="L2588"></a><tt class="py-lineno">2588</tt>  <tt class="py-line"><tt class="py-string">          &lt;l&gt;4294967296&lt;/l&gt;</tt> </tt>
+<a name="L2589"></a><tt class="py-lineno">2589</tt>  <tt class="py-line"><tt class="py-string">          &lt;l&gt;-4294967296&lt;/l&gt;</tt> </tt>
+<a name="L2590"></a><tt class="py-lineno">2590</tt>  <tt class="py-line"><tt class="py-string">          &lt;f&gt;1.1&lt;/f&gt;</tt> </tt>
+<a name="L2591"></a><tt class="py-lineno">2591</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;true&lt;/b&gt;</tt> </tt>
+<a name="L2592"></a><tt class="py-lineno">2592</tt>  <tt class="py-line"><tt class="py-string">          &lt;b&gt;false&lt;/b&gt;</tt> </tt>
+<a name="L2593"></a><tt class="py-lineno">2593</tt>  <tt class="py-line"><tt class="py-string">          &lt;s&gt;Strange things happen, where strings collide&lt;/s&gt;</tt> </tt>
+<a name="L2594"></a><tt class="py-lineno">2594</tt>  <tt class="py-line"><tt class="py-string">          &lt;s&gt;True&lt;/s&gt;</tt> </tt>
+<a name="L2595"></a><tt class="py-lineno">2595</tt>  <tt class="py-line"><tt class="py-string">          &lt;s&gt;False&lt;/s&gt;</tt> </tt>
+<a name="L2596"></a><tt class="py-lineno">2596</tt>  <tt class="py-line"><tt class="py-string">          &lt;s&gt;t&lt;/s&gt;</tt> </tt>
+<a name="L2597"></a><tt class="py-lineno">2597</tt>  <tt class="py-line"><tt class="py-string">          &lt;s&gt;f&lt;/s&gt;</tt> </tt>
+<a name="L2598"></a><tt class="py-lineno">2598</tt>  <tt class="py-line"><tt class="py-string">          &lt;s&gt;&lt;/s&gt;</tt> </tt>
+<a name="L2599"></a><tt class="py-lineno">2599</tt>  <tt class="py-line"><tt class="py-string">          &lt;s&gt;None&lt;/s&gt;</tt> </tt>
+<a name="L2600"></a><tt class="py-lineno">2600</tt>  <tt class="py-line"><tt class="py-string">          &lt;n xsi:nil="true" /&gt;</tt> </tt>
+<a name="L2601"></a><tt class="py-lineno">2601</tt>  <tt class="py-line"><tt class="py-string">        &lt;/root&gt;</tt> </tt>
+<a name="L2602"></a><tt class="py-lineno">2602</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L2603"></a><tt class="py-lineno">2603</tt>  <tt class="py-line">        <tt id="link-2779" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2779', 'root', 'link-144');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2780" 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-2780', 'XML', 'link-63');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2781" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-2781', 'xml', 'link-64');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2604"></a><tt class="py-lineno">2604</tt>  <tt class="py-line"> </tt>
+<a name="L2605"></a><tt class="py-lineno">2605</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt id="link-2782" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2782', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">i</tt><tt class="py-op">:</tt> </tt>
+<a name="L2606"></a><tt class="py-lineno">2606</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt id="link-2783" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2783', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2784" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-2784', 'IntElement', 'link-35');">IntElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2607"></a><tt class="py-lineno">2607</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">l</tt> <tt class="py-keyword">in</tt> <tt id="link-2785" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2785', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">l</tt><tt class="py-op">:</tt> </tt>
+<a name="L2608"></a><tt class="py-lineno">2608</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt> <tt id="link-2786" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2786', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2787" class="py-name"><a title="lxml.objectify.IntElement" class="py-name" href="#" onclick="return doclink('link-2787', 'IntElement', 'link-35');">IntElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2609"></a><tt class="py-lineno">2609</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">f</tt> <tt class="py-keyword">in</tt> <tt id="link-2788" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2788', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">:</tt> </tt>
+<a name="L2610"></a><tt class="py-lineno">2610</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-2789" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2789', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2790" class="py-name"><a title="lxml.objectify.FloatElement" class="py-name" href="#" onclick="return doclink('link-2790', 'FloatElement', 'link-37');">FloatElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt>   </tt>
+<a name="L2611"></a><tt class="py-lineno">2611</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">b</tt> <tt class="py-keyword">in</tt> <tt id="link-2791" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2791', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</tt><tt class="py-op">:</tt> </tt>
+<a name="L2612"></a><tt class="py-lineno">2612</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt id="link-2792" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2792', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2793" class="py-name"><a title="lxml.objectify.BoolElement" class="py-name" href="#" onclick="return doclink('link-2793', 'BoolElement', 'link-39');">BoolElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2613"></a><tt class="py-lineno">2613</tt>  <tt class="py-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">True</tt><tt class="py-op">,</tt>  <tt id="link-2794" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2794', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L2614"></a><tt class="py-lineno">2614</tt>  <tt class="py-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">False</tt><tt class="py-op">,</tt> <tt id="link-2795" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2795', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">b</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="L2615"></a><tt class="py-lineno">2615</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt id="link-2796" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2796', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">s</tt><tt class="py-op">:</tt> </tt>
+<a name="L2616"></a><tt class="py-lineno">2616</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-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt id="link-2797" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2797', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2798" class="py-name"><a title="lxml.objectify.StringElement" class="py-name" href="#" onclick="return doclink('link-2798', 'StringElement', 'link-41');">StringElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2617"></a><tt class="py-lineno">2617</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-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-2799" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2799', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">,</tt> <tt id="link-2800" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2800', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">.</tt><tt id="link-2801" class="py-name"><a title="lxml.objectify.NoneElement" class="py-name" href="#" onclick="return doclink('link-2801', 'NoneElement', 'link-353');">NoneElement</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2618"></a><tt class="py-lineno">2618</tt>  <tt class="py-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-2802" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2802', 'root', 'link-144');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L2619"></a><tt class="py-lineno">2619</tt>  <tt class="py-line"> </tt>
+<a name="test_suite"></a><div id="test_suite-def"><a name="L2620"></a><tt class="py-lineno">2620</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_objectify-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="L2621"></a><tt class="py-lineno">2621</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="L2622"></a><tt class="py-lineno">2622</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-2803" class="py-name"><a title="lxml.tests.test_objectify.ObjectifyTestCase" class="py-name" href="#" onclick="return doclink('link-2803', 'ObjectifyTestCase', 'link-66');">ObjectifyTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2623"></a><tt class="py-lineno">2623</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-name">doctest</tt><tt class="py-op">.</tt><tt class="py-name">DocTestSuite</tt><tt class="py-op">(</tt><tt id="link-2804" class="py-name"><a title="lxml.objectify" class="py-name" href="#" onclick="return doclink('link-2804', 'objectify', 'link-20');">objectify</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2624"></a><tt class="py-lineno">2624</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version_info</tt> <tt class="py-op">&gt;=</tt> <tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2625"></a><tt class="py-lineno">2625</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="L2626"></a><tt class="py-lineno">2626</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt id="link-2805" class="py-name"><a title="lxml.tests.common_imports.make_doctest" class="py-name" href="#" onclick="return doclink('link-2805', 'make_doctest', 'link-15');">make_doctest</a></tt><tt class="py-op">(</tt><tt class="py-string">'../../../doc/objectify.txt'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2627"></a><tt class="py-lineno">2627</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">suite</tt> </tt>
+</div><a name="L2628"></a><tt class="py-lineno">2628</tt>  <tt class="py-line"> </tt>
+<a name="L2629"></a><tt class="py-lineno">2629</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="L2630"></a><tt class="py-lineno">2630</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="L2631"></a><tt class="py-lineno">2631</tt>  <tt class="py-line"> </tt><script type="text/javascript">
 <!--
 expandto(location.href);
 // -->
@@ -5713,7 +5803,7 @@ 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 Thu Mar 17 15:04:28 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dd453abead3a94d034b6f7560012ae981fdae603..bebb65e3ee7791b943f69b0a90e6db8343cefc76 100644 (file)
@@ -1783,6 +1783,86 @@ Test cases for lxml.objectify
         </tr>
       </table>
       
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="test_type_float_precision"></a><span class="summary-sig-name">test_type_float_precision</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lxml.tests.test_objectify-pysrc.html#ObjectifyTestCase.test_type_float_precision">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="test_type_float_instantiation_precision"></a><span class="summary-sig-name">test_type_float_instantiation_precision</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lxml.tests.test_objectify-pysrc.html#ObjectifyTestCase.test_type_float_instantiation_precision">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="test_type_float_precision_consistency"></a><span class="summary-sig-name">test_type_float_precision_consistency</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lxml.tests.test_objectify-pysrc.html#ObjectifyTestCase.test_type_float_precision_consistency">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="test_data_element_float_precision"></a><span class="summary-sig-name">test_data_element_float_precision</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lxml.tests.test_objectify-pysrc.html#ObjectifyTestCase.test_data_element_float_precision">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="test_data_element_float_hash_repr"></a><span class="summary-sig-name">test_data_element_float_hash_repr</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lxml.tests.test_objectify-pysrc.html#ObjectifyTestCase.test_data_element_float_hash_repr">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
     </td>
   </tr>
 <tr>
@@ -3555,7 +3635,7 @@ Test cases for lxml.objectify
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9bccf6f22f24cf674753e8308894b38a653ef590..df532d872fec7230c8250c08750b88cfe44b452d 100644 (file)
@@ -265,7 +265,7 @@ Tests specific to the Python based class lookup.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4b26aa5a47813fb074cee326c757f6a1e93314f9..63665085c5ec30ecfcffd617cae14b1573a4719c 100644 (file)
@@ -872,7 +872,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fd4faa0c463f562bd008e5b48bd7cad822317511..65aa376850a87f48c97bde4ddee4af4e21d05820 100644 (file)
@@ -856,7 +856,7 @@ Test cases for the lxml.pyclasslookup class lookup mechanism.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 598811ce4682956a5acc972375d4951c8bb49ca4..7420748084a0df022bce60cbff32c145a951dfec 100644 (file)
@@ -238,7 +238,7 @@ Test cases related to RelaxNG parsing and validation
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6a4217377603d68bbe840867c2f4075a8798f0b5..f7dff0a304424fa3c5804657562e7cf952669a08 100644 (file)
@@ -648,7 +648,7 @@ 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 Thu Mar 17 15:04:28 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fd3beb421cc887e774789ee076d92ec80ffd173a..f025b56d2618d1d52c57d2d4c2974b6e100c5c92 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dd578bbed0ae1e1fda692efab12dfd60ff7cd13a..5d7b359106565db291ba21b16cbffe0aec00a621 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 56d453a410fcbee5d4212ea4983b5aa0c9c7b2dc..d831c2b4d235fe0a7590ab27574d4d193463296d 100644 (file)
@@ -223,7 +223,7 @@ Test cases related to SAX I/O
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ddbd1cd8645c79153963c3906bc569f8aefc386e..53f56f17586b8f920300236a9e3e3c895b770ebd 100644 (file)
@@ -654,7 +654,7 @@ 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 Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d22b79172acaeaf0d74878585c5d1bb96f32c4a6..726e7ac8d7fc539472279518885a7b16d852b18e 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7dee40e2d3ca7dd5f40c3ffe646cead813cea142..e10a1ae1085f3b7ee143438e9ab59e59aa625a87 100644 (file)
@@ -223,7 +223,7 @@ Test cases related to Schematron parsing and validation
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9058b6e94a1d3c8e0d5e0a763b87d830608d8e05..f5f46b7dbf315b7db8d7bc6142a7ef17d9d402f8 100644 (file)
@@ -349,7 +349,7 @@ 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 Thu Mar 17 15:04:28 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8c9e2cbb99b977fbc2ae568dd62ae50b1507043a..d71e28976e3623848b5a83a6121577f6022b9e2b 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c62b8b99f82034fe68892719fe7927941866dd79..2b1ae177365d9ccce824576fb69d975546afc1af 100644 (file)
@@ -232,7 +232,7 @@ Tests for thread usage in lxml.etree.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d99083d9567804db74f7a67b5720606f22bdfd93..540f553299e70242003b8fc9c06cd07e2f4f78c6 100644 (file)
@@ -1249,7 +1249,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dab8adafef3d1c8400bf47574b40a14a60453ff8..2c5716e394bf09be2b57ce154594a1f5b174a0e0 100644 (file)
@@ -523,7 +523,7 @@ Threading tests based on a thread worker pipeline.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cc9a5a290895ae686a73d904c87150d923ac4067..c73ce32c2d5b42c73f6a24530d4ee3f7b2f6e1c0 100644 (file)
         <tr>
           <td><span class="summary-sig"><a href="lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker-class.html#handle" class="summary-sig-name">handle</a>(<span class="summary-sig-arg">self</span>,
         <span class="summary-sig-arg">element</span>,
-        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x2ad9e7d12350&gt;</span>)</span></td>
+        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x2b8b5d914290&gt;</span>)</span></td>
           <td align="right" valign="top">
             <span class="codelink"><a href="lxml.tests.test_threading-pysrc.html#ThreadPipelineTestCase.ParseAndExtendWorker.handle">source&nbsp;code</a></span>
             
   <tr valign="top"><td>
   <h3 class="epydoc"><span class="sig"><span class="sig-name">handle</span>(<span class="sig-arg">self</span>,
         <span class="sig-arg">element</span>,
-        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x2ad9e7d12350&gt;</span>)</span>
+        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x2b8b5d914290&gt;</span>)</span>
   </h3>
   </td><td align="right" valign="top"
     ><span class="codelink"><a href="lxml.tests.test_threading-pysrc.html#ThreadPipelineTestCase.ParseAndExtendWorker.handle">source&nbsp;code</a></span>&nbsp;
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c6f8747a6624aa40431e86ee437653faacb6ca3a..6d8968a9b78226777dde4c41d40380776e425bfa 100644 (file)
         <tr>
           <td><span class="summary-sig"><a href="lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndInjectWorker-class.html#handle" class="summary-sig-name">handle</a>(<span class="summary-sig-arg">self</span>,
         <span class="summary-sig-arg">element</span>,
-        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x2ad9e7d12350&gt;</span>)</span></td>
+        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x2b8b5d914290&gt;</span>)</span></td>
           <td align="right" valign="top">
             <span class="codelink"><a href="lxml.tests.test_threading-pysrc.html#ThreadPipelineTestCase.ParseAndInjectWorker.handle">source&nbsp;code</a></span>
             
   <tr valign="top"><td>
   <h3 class="epydoc"><span class="sig"><span class="sig-name">handle</span>(<span class="sig-arg">self</span>,
         <span class="sig-arg">element</span>,
-        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x2ad9e7d12350&gt;</span>)</span>
+        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x2b8b5d914290&gt;</span>)</span>
   </h3>
   </td><td align="right" valign="top"
     ><span class="codelink"><a href="lxml.tests.test_threading-pysrc.html#ThreadPipelineTestCase.ParseAndInjectWorker.handle">source&nbsp;code</a></span>&nbsp;
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 98546c3a8c29f9a814fd332502c63d9b3105a9b5..1ca9869e2e082bcf239df9f20d3ad2410dfbbe02 100644 (file)
         <tr>
           <td><span class="summary-sig"><a href="lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker-class.html#handle" class="summary-sig-name">handle</a>(<span class="summary-sig-arg">self</span>,
         <span class="summary-sig-arg">xml</span>,
-        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x2ad9e7d12350&gt;</span>)</span></td>
+        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x2b8b5d914290&gt;</span>)</span></td>
           <td align="right" valign="top">
             <span class="codelink"><a href="lxml.tests.test_threading-pysrc.html#ThreadPipelineTestCase.ParseWorker.handle">source&nbsp;code</a></span>
             
   <tr valign="top"><td>
   <h3 class="epydoc"><span class="sig"><span class="sig-name">handle</span>(<span class="sig-arg">self</span>,
         <span class="sig-arg">xml</span>,
-        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x2ad9e7d12350&gt;</span>)</span>
+        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x2b8b5d914290&gt;</span>)</span>
   </h3>
   </td><td align="right" valign="top"
     ><span class="codelink"><a href="lxml.tests.test_threading-pysrc.html#ThreadPipelineTestCase.ParseWorker.handle">source&nbsp;code</a></span>&nbsp;
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 69d8e707a7d980b769f0814f2680ad2e4be03f23..9de5d2354a5d3b766ea24a9175b101ce114c95b4 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 473843f2a6990beb280308b97b6bd64e98b35ca2..33f391b511c856d480d3b9b3171808c27da85ab6 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5dc8bee545da0f7bc742e484faa6ccd3ac70b1c8..f79e0d4287b7669938d07013cdba58e452126396 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fbf0a463b290a0c94e4f9c96158772ed7eed5ed9..3aff06a452ba4dad070d7f0cf54f10dbca7b7a09 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3ee52ce8ae88c724d0c4642d1e23c3d4dfda61e0..008cac8ad2e06f02a6e289ff7742623d2f30de0c 100644 (file)
@@ -338,7 +338,7 @@ from the args and kwargs arguments, respectively.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c57e2ba43a8c77a53bc5b3c0f59f7438f66c783b..25c186e705e876534e60504cf18a77087d20bd54 100644 (file)
@@ -564,7 +564,7 @@ Threading tests
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a6faf33a30379c4b8aa5b0380083554e34d38a32..dc03f269714825b1db7278ffbac088f81d4561ec 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 12e05d7cdcba47d344b198bcefe0eb28024d0ccb..3f718f9e1ad8de5fde282b99088631b2864074bb 100644 (file)
@@ -630,7 +630,7 @@ 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 Thu Mar 17 15:04:28 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7e8fed0a92e967a2582167d82e4c20bfcf6041f7..f97f1e6d6f1d5d6787454da5944be83916092fde 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4b5e32712b0db9ef76a5262fdb23920d6dc2145c..9858915b60bbceb4185daca44f4c799d30177182 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c8a6312ac1db3c55ee33470d5738451d0327e8c9..50924320df7039ca8c98705b904f0d9fbdfc2e9a 100644 (file)
@@ -230,7 +230,7 @@ Test cases related to XML Schema parsing and validation
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 76edb159c473eb9e62abda52dca0372b3e2b973f..4cca2a8525e7f0621ad1d77c78edb8f98659c8fc 100644 (file)
@@ -1316,7 +1316,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1fc1a77c4895b5da15b2e05a225f1f4dcb54bf60..b98747124de2760b3ac4a0525ac22fab885e4bf0 100644 (file)
@@ -529,7 +529,7 @@ BytesIO(&quot;&quot;&quot;\
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 26917e4aead91d4c2d21f616e52a549620a30cb2..a9453387fdf803e27cf71781773ae6a4fb295863 100644 (file)
@@ -284,7 +284,7 @@ opaque context object.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d1961aaa789158c771a4c1610f5f5aa594531298..2a14f80d61457617707de340d5b5f33f9c56c6af 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a56abe6f684dd9c73fe35b2600a2153ad620460f..3beea053f784d6fec09b9f68dfd4a5f269750838 100644 (file)
@@ -424,7 +424,7 @@ tTest, (None, 'floatTest'): floatTest, (None, 'booleanTest'): booleanT\
 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>&lt;function argsTest1 at 0x2ad<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>&lt;function argsTest1 at 0x2b8<code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -552,7 +552,7 @@ Test2,}
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7866bfedd9102f26d49258b8654fac9fc8819f9a..2c92e63bd9069932fbdc49f288d52b046ddf60f4 100644 (file)
@@ -1992,7 +1992,7 @@ 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 Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4742fd4db350676e9112831f5ec789e0cb304fce..6eddcf9cf8f32f7ea31a7c4fec1e533846a21528 100644 (file)
@@ -358,7 +358,7 @@ Tests for the ETXPath class
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2f3d1cb188dec5ccb5b60adc39cc12e612919b16..2a36453d1048258357fa09a9ac5437f8c076c5d1 100644 (file)
@@ -406,7 +406,7 @@ Tests for the XPath class
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2b09ebba018def1b1d9480f2763a81a7e3a281b1..6dbaa619dd1292967a5fb7031bbc473a6757de83 100644 (file)
@@ -408,7 +408,7 @@ Tests for the EXSLT support in XPath (requires libxslt 1.1.25+)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4dad1047340082df32f576d5c24c4679ca620cb6..625629e438199405de43ccbdf1091d312a64708e 100644 (file)
@@ -1030,7 +1030,7 @@ XPath tests etree
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 421dcd27471473e9a1f97ff06d36883dd3f021b5..5374ca2e7e7cbbf9733808a1b193c04354801bdd 100644 (file)
@@ -279,7 +279,7 @@ Test cases related to XSLT processing
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9dbdb8ba644d35e99aeb6a1a093e121a2b86ad9a..2e638b9885075056a45c17d13cc201d8dde48f64 100644 (file)
@@ -224,4040 +224,4025 @@ lxml.tests.test_elementtree._XMLPullParserTest.etree
 lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-34', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
 lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-35', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
 </div><a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"> </tt>
-<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">False</tt> <tt class="py-keyword">and</tt> <tt id="link-36" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-36', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Variable lxml.etree.LIBXSLT_VERSION=lxml.etree-module.html#LIBXSLT_VERSION"><a title="lxml.etree.LIBXSLT_VERSION" class="py-name" href="#" onclick="return doclink('link-37', 'LIBXSLT_VERSION', 'link-37');">LIBXSLT_VERSION</a></tt> <tt class="py-op">&gt;=</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">15</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line">        <tt class="py-comment"># earlier versions generate no error</tt> </tt>
-<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-38" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-38', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="lxml.etree.LIBXSLT_VERSION" class="py-name" href="#" onclick="return doclink('link-39', 'LIBXSLT_VERSION', 'link-37');">LIBXSLT_VERSION</a></tt> <tt class="py-op">&gt;</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">17</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_invalid_stylesheet"></a><div id="ETreeXSLTTestCase.test_xslt_invalid_stylesheet-def"><a name="L59"></a><tt class="py-lineno">  59</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_invalid_stylesheet-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_invalid_stylesheet');">-</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_invalid_stylesheet">test_xslt_invalid_stylesheet</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_invalid_stylesheet-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++++++++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_invalid_stylesheet-expanded"><a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line">                <tt id="link-40" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-40', '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-41" class="py-name"><a title="lxml.etree._ElementTree.parse
+<a name="ETreeXSLTTestCase.test_xslt_invalid_stylesheet"></a><div id="ETreeXSLTTestCase.test_xslt_invalid_stylesheet-def"><a name="L56"></a><tt class="py-lineno">  56</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_invalid_stylesheet-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_invalid_stylesheet');">-</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_invalid_stylesheet">test_xslt_invalid_stylesheet</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_invalid_stylesheet-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_invalid_stylesheet-expanded"><a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line">        <tt id="link-36" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-36', '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-37" 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-41', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:stylesheet /&gt;</tt> </tt>
-<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"> </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">assertRaises</tt><tt class="py-op">(</tt> </tt>
-<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line">                    <tt id="link-42" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-37', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-string">        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:stylesheet /&gt;</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"> </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">assertRaises</tt><tt class="py-op">(</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line">            <tt id="link-38" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-42', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Class lxml.etree.XSLTParseError=lxml.etree.XSLTParseError-class.html"><a title="lxml.etree.XSLTParseError" class="py-name" href="#" onclick="return doclink('link-43', 'XSLTParseError', 'link-43');">XSLTParseError</a></tt><tt class="py-op">,</tt> <tt id="link-44" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-38', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Class lxml.etree.XSLTParseError=lxml.etree.XSLTParseError-class.html"><a title="lxml.etree.XSLTParseError" class="py-name" href="#" onclick="return doclink('link-39', 'XSLTParseError', 'link-39');">XSLTParseError</a></tt><tt class="py-op">,</tt> <tt id="link-40" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-44', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-45', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">,</tt> <tt id="link-46" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-46', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line">         </tt>
-<a name="ETreeXSLTTestCase.test_xslt_copy"></a><div id="ETreeXSLTTestCase.test_xslt_copy-def"><a name="L69"></a><tt class="py-lineno">  69</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_copy-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_copy');">-</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_copy">test_xslt_copy</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_copy-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_copy-expanded"><a name="L70"></a><tt class="py-lineno">  70</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-47" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-40', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-41', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">,</tt> <tt id="link-42" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-42', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_copy"></a><div id="ETreeXSLTTestCase.test_xslt_copy-def"><a name="L66"></a><tt class="py-lineno">  66</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_copy-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_copy');">-</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_copy">test_xslt_copy</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_copy-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_copy-expanded"><a name="L67"></a><tt class="py-lineno">  67</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-43" 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-47', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line">        <tt id="link-48" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-48', '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-49" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-43', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line">        <tt id="link-44" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-44', '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-45" 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-49', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
-<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line"> </tt>
-<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line">        <tt class="py-name">transform</tt> <tt class="py-op">=</tt> <tt id="link-50" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-50', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-51', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-52" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-52', 'style', 'link-24');">style</a></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">res</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-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="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
-<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line">                          <tt id="link-53" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-53', '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="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"> </tt>
-<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line">        <tt class="py-name">transform_copy</tt> <tt class="py-op">=</tt> <tt id="link-54" class="py-name"><a title="lxml.etree.PyErrorLog.copy
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-45', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"> </tt>
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line">        <tt class="py-name">transform</tt> <tt class="py-op">=</tt> <tt id="link-46" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-46', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-47', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-48" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-48', 'style', 'link-24');">style</a></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">res</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">tree</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">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="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line">                          <tt id="link-49" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-49', '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="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"> </tt>
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line">        <tt class="py-name">transform_copy</tt> <tt class="py-op">=</tt> <tt id="link-50" class="py-name"><a title="lxml.etree.PyErrorLog.copy
 lxml.etree._BaseErrorLog.copy
 lxml.etree._ErrorLog.copy
 lxml.etree._IDDict.copy
 lxml.etree._ListErrorLog.copy
-lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-54', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">transform</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">res</tt> <tt class="py-op">=</tt> <tt class="py-name">transform_copy</tt><tt class="py-op">(</tt><tt class="py-name">tree</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">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="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
-<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line">                          <tt id="link-55" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-55', '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="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line"> </tt>
-<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line">        <tt class="py-name">transform</tt> <tt class="py-op">=</tt> <tt id="link-56" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-56', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-57', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-58" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-58', 'style', 'link-24');">style</a></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">res</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">tree</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">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="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
-<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line">                          <tt id="link-59" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-59', '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="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_utf8"></a><div id="ETreeXSLTTestCase.test_xslt_utf8-def"><a name="L104"></a><tt class="py-lineno"> 104</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_utf8-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_utf8');">-</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_utf8">test_xslt_utf8</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_utf8-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_utf8-expanded"><a name="L105"></a><tt class="py-lineno"> 105</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-60" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-50', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">transform</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">res</tt> <tt class="py-op">=</tt> <tt class="py-name">transform_copy</tt><tt class="py-op">(</tt><tt class="py-name">tree</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">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="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line">                          <tt id="link-51" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-51', '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="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-name">transform</tt> <tt class="py-op">=</tt> <tt id="link-52" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-52', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-53', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-54" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-54', 'style', 'link-24');">style</a></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">res</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">tree</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">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="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line">                          <tt id="link-55" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-55', '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="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_utf8"></a><div id="ETreeXSLTTestCase.test_xslt_utf8-def"><a name="L101"></a><tt class="py-lineno"> 101</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_utf8-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_utf8');">-</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_utf8">test_xslt_utf8</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_utf8-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_utf8-expanded"><a name="L102"></a><tt class="py-lineno"> 102</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-56" 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-60', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-61" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-61', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;\\uF8D2&lt;/b&gt;&lt;c&gt;\\uF8D2&lt;/c&gt;&lt;/a&gt;'</tt> </tt>
-<a name="L106"></a><tt class="py-lineno"> 106</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="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">        <tt id="link-62" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-62', '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-63" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-56', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-57" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-57', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;\\uF8D2&lt;/b&gt;&lt;c&gt;\\uF8D2&lt;/c&gt;&lt;/a&gt;'</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</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="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">        <tt id="link-58" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-58', '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-59" 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-63', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:output encoding="UTF-8"/&gt;</tt> </tt>
-<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line"> </tt>
-<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-64" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-64', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-65', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-66" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-66', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L117"></a><tt class="py-lineno"> 117</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="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line">        <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt id="link-67" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-67', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</tt> </tt>
-<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;\\uF8D2&lt;/foo&gt;</tt> </tt>
-<a name="L121"></a><tt class="py-lineno"> 121</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="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-68" class="py-name"><a title="lxml.tests.test_xslt.is_python3" class="py-name" href="#" onclick="return doclink('link-68', 'is_python3', 'link-9');">is_python3</a></tt><tt class="py-op">:</tt> </tt>
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-59', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:output encoding="UTF-8"/&gt;</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line"> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-60" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-60', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-61', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-62" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-62', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</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="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">        <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt id="link-63" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-63', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</tt> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;\\uF8D2&lt;/foo&gt;</tt> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</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="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-64" class="py-name"><a title="lxml.tests.test_xslt.is_python3" class="py-name" href="#" onclick="return doclink('link-64', 'is_python3', 'link-9');">is_python3</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-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="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line">                              <tt id="link-65" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-65', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><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 class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
 <a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-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="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line">                              <tt id="link-69" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-69', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><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 class="py-string">'UTF-8'</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-keyword">else</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">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="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line">                              <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt id="link-70" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-70', '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 class="py-string">'UTF-8'</tt><tt class="py-op">)</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="ETreeXSLTTestCase.test_xslt_encoding"></a><div id="ETreeXSLTTestCase.test_xslt_encoding-def"><a name="L129"></a><tt class="py-lineno"> 129</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_encoding-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_encoding');">-</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_encoding">test_xslt_encoding</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_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_encoding-expanded"><a name="L130"></a><tt class="py-lineno"> 130</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-71" class="py-name"><a title="lxml.etree._ElementTree.parse
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line">                              <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt id="link-66" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-66', '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 class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_encoding"></a><div id="ETreeXSLTTestCase.test_xslt_encoding-def"><a name="L126"></a><tt class="py-lineno"> 126</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_encoding-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_encoding');">-</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_encoding">test_xslt_encoding</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_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_encoding-expanded"><a name="L127"></a><tt class="py-lineno"> 127</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-67" 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-71', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-72" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-72', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;\\uF8D2&lt;/b&gt;&lt;c&gt;\\uF8D2&lt;/c&gt;&lt;/a&gt;'</tt> </tt>
-<a name="L131"></a><tt class="py-lineno"> 131</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="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line">        <tt id="link-73" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-73', '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-74" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-67', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-68" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-68', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;\\uF8D2&lt;/b&gt;&lt;c&gt;\\uF8D2&lt;/c&gt;&lt;/a&gt;'</tt> </tt>
+<a name="L128"></a><tt class="py-lineno"> 128</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="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line">        <tt id="link-69" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-69', '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-70" 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-74', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:output encoding="UTF-16"/&gt;</tt> </tt>
-<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line"> </tt>
-<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-75" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-75', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-76', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-77" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-77', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L142"></a><tt class="py-lineno"> 142</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="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line">        <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt id="link-78" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-78', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0" encoding="UTF-16"?&gt;</tt> </tt>
-<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;\\uF8D2&lt;/foo&gt;</tt> </tt>
-<a name="L146"></a><tt class="py-lineno"> 146</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="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-79" class="py-name"><a title="lxml.tests.test_xslt.is_python3" class="py-name" href="#" onclick="return doclink('link-79', 'is_python3', 'link-9');">is_python3</a></tt><tt class="py-op">:</tt> </tt>
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-70', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:output encoding="UTF-16"/&gt;</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line"> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-71" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-71', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-72', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-73" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-73', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</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="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">        <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-74', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0" encoding="UTF-16"?&gt;</tt> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;\\uF8D2&lt;/foo&gt;</tt> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</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="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-75" class="py-name"><a title="lxml.tests.test_xslt.is_python3" class="py-name" href="#" onclick="return doclink('link-75', 'is_python3', 'link-9');">is_python3</a></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">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="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line">                              <tt id="link-76" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-76', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><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 class="py-string">'UTF-16'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
 <a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-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="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line">                              <tt id="link-80" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-80', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><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 class="py-string">'UTF-16'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-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="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line">                              <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt id="link-81" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-81', '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 class="py-string">'UTF-16'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_encoding_override"></a><div id="ETreeXSLTTestCase.test_xslt_encoding_override-def"><a name="L154"></a><tt class="py-lineno"> 154</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_encoding_override-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_encoding_override');">-</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_encoding_override">test_xslt_encoding_override</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_encoding_override-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_encoding_override-expanded"><a name="L155"></a><tt class="py-lineno"> 155</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-82" class="py-name"><a title="lxml.etree._ElementTree.parse
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line">                              <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt id="link-77" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-77', '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 class="py-string">'UTF-16'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_encoding_override"></a><div id="ETreeXSLTTestCase.test_xslt_encoding_override-def"><a name="L151"></a><tt class="py-lineno"> 151</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_encoding_override-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_encoding_override');">-</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_encoding_override">test_xslt_encoding_override</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_encoding_override-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_encoding_override-expanded"><a name="L152"></a><tt class="py-lineno"> 152</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-78" 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-82', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-83" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-83', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;\\uF8D2&lt;/b&gt;&lt;c&gt;\\uF8D2&lt;/c&gt;&lt;/a&gt;'</tt> </tt>
-<a name="L156"></a><tt class="py-lineno"> 156</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="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line">        <tt id="link-84" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-84', '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-85" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-78', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-79" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-79', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;\\uF8D2&lt;/b&gt;&lt;c&gt;\\uF8D2&lt;/c&gt;&lt;/a&gt;'</tt> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</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="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line">        <tt id="link-80" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-80', '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-81" 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-85', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:output encoding="UTF-8"/&gt;</tt> </tt>
-<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line"> </tt>
-<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-86" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-86', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-87', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-88" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-88', 'style', 'link-24');">style</a></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">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="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line">        <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt id="link-89" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-89', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version='1.0' encoding='UTF-16'?&gt;\</tt> </tt>
-<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;\\uF8D2&lt;/foo&gt;"""</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="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line"> </tt>
-<a name="L172"></a><tt class="py-lineno"> 172</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="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">        <tt class="py-name">res</tt><tt class="py-op">.</tt><tt id="link-90" 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-90', 'write', 'link-90');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-91" class="py-name" targets="Variable lxml.etree.DocInfo.encoding=lxml.etree.DocInfo-class.html#encoding,Function lxml.tests.selftest.encoding()=lxml.tests.selftest-module.html#encoding,Function lxml.tests.selftest2.encoding()=lxml.tests.selftest2-module.html#encoding"><a title="lxml.etree.DocInfo.encoding
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-81', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:output encoding="UTF-8"/&gt;</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-82" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-82', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-83', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-84" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-84', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L164"></a><tt class="py-lineno"> 164</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="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line">        <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt id="link-85" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-85', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version='1.0' encoding='UTF-16'?&gt;\</tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;\\uF8D2&lt;/foo&gt;"""</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="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line"> </tt>
+<a name="L169"></a><tt class="py-lineno"> 169</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="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line">        <tt class="py-name">res</tt><tt class="py-op">.</tt><tt id="link-86" 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-86', 'write', 'link-86');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-87" class="py-name" targets="Variable lxml.etree.DocInfo.encoding=lxml.etree.DocInfo-class.html#encoding,Function lxml.tests.selftest.encoding()=lxml.tests.selftest-module.html#encoding,Function lxml.tests.selftest2.encoding()=lxml.tests.selftest2-module.html#encoding"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-91', 'encoding', 'link-91');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">'UTF-16'</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">if</tt> <tt id="link-92" class="py-name"><a title="lxml.tests.test_xslt.is_python3" class="py-name" href="#" onclick="return doclink('link-92', 'is_python3', 'link-9');">is_python3</a></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">result</tt> <tt class="py-op">=</tt> <tt id="link-93" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-93', 'str', 'link-10');">str</a></tt><tt class="py-op">(</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 class="py-string">'UTF-16'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-94" 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-94', 'replace', 'link-94');">replace</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
-<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">            <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt id="link-95" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-95', 'str', 'link-10');">str</a></tt><tt class="py-op">(</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 class="py-op">,</tt> <tt class="py-string">'UTF-16'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-96', 'replace', 'link-94');">replace</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-string">''</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 class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">expected</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_unicode"></a><div id="ETreeXSLTTestCase.test_xslt_unicode-def"><a name="L180"></a><tt class="py-lineno"> 180</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_unicode-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_unicode');">-</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">test_xslt_unicode</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-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_unicode-expanded"><a name="L181"></a><tt class="py-lineno"> 181</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-97" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-87', 'encoding', 'link-87');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">'UTF-16'</tt><tt class="py-op">)</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-88" class="py-name"><a title="lxml.tests.test_xslt.is_python3" class="py-name" href="#" onclick="return doclink('link-88', 'is_python3', 'link-9');">is_python3</a></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">result</tt> <tt class="py-op">=</tt> <tt id="link-89" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-89', 'str', 'link-10');">str</a></tt><tt class="py-op">(</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 class="py-string">'UTF-16'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-90" 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-90', 'replace', 'link-90');">replace</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">            <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt id="link-91" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-91', 'str', 'link-10');">str</a></tt><tt class="py-op">(</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 class="py-op">,</tt> <tt class="py-string">'UTF-16'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-92', 'replace', 'link-90');">replace</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-string">''</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">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 class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_unicode"></a><div id="ETreeXSLTTestCase.test_xslt_unicode-def"><a name="L177"></a><tt class="py-lineno"> 177</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_unicode-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_unicode');">-</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">test_xslt_unicode</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-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_unicode-expanded"><a name="L178"></a><tt class="py-lineno"> 178</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-93" 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-97', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-98" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-98', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;\\uF8D2&lt;/b&gt;&lt;c&gt;\\uF8D2&lt;/c&gt;&lt;/a&gt;'</tt> </tt>
-<a name="L182"></a><tt class="py-lineno"> 182</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="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line">        <tt id="link-99" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-99', '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-100" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-93', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-94" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-94', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;\\uF8D2&lt;/b&gt;&lt;c&gt;\\uF8D2&lt;/c&gt;&lt;/a&gt;'</tt> </tt>
+<a name="L179"></a><tt class="py-lineno"> 179</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="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">        <tt id="link-95" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-95', '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-96" 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-100', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:output encoding="UTF-16"/&gt;</tt> </tt>
-<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"> </tt>
-<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-101" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-101', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-102', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-103" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-103', 'style', 'link-24');">style</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">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="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line">        <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt id="link-104" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-104', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;\\uF8D2&lt;/foo&gt;</tt> </tt>
-<a name="L197"></a><tt class="py-lineno"> 197</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="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_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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-96', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:output encoding="UTF-16"/&gt;</tt> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line"> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-97" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-97', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-98', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-99" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-99', 'style', 'link-24');">style</a></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">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="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line">        <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt id="link-100" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-100', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;\\uF8D2&lt;/foo&gt;</tt> </tt>
+<a name="L194"></a><tt class="py-lineno"> 194</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="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-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="L196"></a><tt class="py-lineno"> 196</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="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_unicode_standalone"></a><div id="ETreeXSLTTestCase.test_xslt_unicode_standalone-def"><a name="L198"></a><tt class="py-lineno"> 198</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="L199"></a><tt class="py-lineno"> 199</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-101" 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-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">'&lt;a&gt;&lt;b&gt;\\uF8D2&lt;/b&gt;&lt;c&gt;\\uF8D2&lt;/c&gt;&lt;/a&gt;'</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-101', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-102" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-102', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;\\uF8D2&lt;/b&gt;&lt;c&gt;\\uF8D2&lt;/c&gt;&lt;/a&gt;'</tt> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</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="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line">        <tt id="link-103" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-103', '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-104" 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">&lt;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"&gt;</tt> </tt>
-<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:output encoding="UTF-16" standalone="no"/&gt;</tt> </tt>
-<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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_elementtree._XMLPullParserTest.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">&lt;?xml version="1.0" standalone="no"?&gt;</tt> </tt>
-<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;\\uF8D2&lt;/foo&gt;</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-104', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:output encoding="UTF-16" standalone="no"/&gt;</tt> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line"> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-105" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-105', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-106', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><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>
+<a name="L211"></a><tt class="py-lineno"> 211</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="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">        <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt id="link-108" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-108', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0" standalone="no"?&gt;</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;\\uF8D2&lt;/foo&gt;</tt> </tt>
+<a name="L215"></a><tt class="py-lineno"> 215</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="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-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="L217"></a><tt class="py-lineno"> 217</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="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_input"></a><div id="ETreeXSLTTestCase.test_xslt_input-def"><a name="L219"></a><tt class="py-lineno"> 219</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="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line">        <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 class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" 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">&lt;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"&gt;</tt> </tt>
-<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
-<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-110', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line"> </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-111" 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_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-111', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-112', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><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>
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-114" 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_elementtree._XMLPullParserTest.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 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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-114', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-115', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-116" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-116', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-117" 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-117', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</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="ETreeXSLTTestCase.test_xslt_input_partial_doc"></a><div id="ETreeXSLTTestCase.test_xslt_input_partial_doc-def"><a name="L232"></a><tt class="py-lineno"> 232</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="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line">        <tt id="link-118" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-118', '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-119" 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-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">&lt;otherroot&gt;</tt> </tt>
-<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"><tt class="py-string">&lt;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"&gt;</tt> </tt>
-<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
-<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
-<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line"><tt class="py-string">&lt;/otherroot&gt;'''</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-119', '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">&lt;otherroot&gt;</tt> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line"><tt class="py-string">&lt;/otherroot&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line"> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</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-120" 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_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-120', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="lxml.etree.XSLTParseError" class="py-name" href="#" onclick="return doclink('link-121', 'XSLTParseError', 'link-39');">XSLTParseError</a></tt><tt class="py-op">,</tt> <tt id="link-122" 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_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-122', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-123', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">,</tt> <tt id="link-124" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-124', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">        <tt class="py-name">root_node</tt> <tt class="py-op">=</tt> <tt id="link-125" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-125', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-126', 'getroot', 'link-117');">getroot</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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-127" 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_elementtree._XMLPullParserTest.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.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.XSLTParseError" class="py-name" href="#" onclick="return doclink('link-128', 'XSLTParseError', 'link-39');">XSLTParseError</a></tt><tt class="py-op">,</tt> <tt id="link-129" 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_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-129', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-130', '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="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">        <tt class="py-name">st</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_elementtree._XMLPullParserTest.etree
-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.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.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-132', '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="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_broken"></a><div id="ETreeXSLTTestCase.test_xslt_broken-def"><a name="L249"></a><tt class="py-lineno"> 249</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="L250"></a><tt class="py-lineno"> 250</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-133" 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">'&lt;a/&gt;'</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-133', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">        <tt id="link-134" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-134', '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-135" 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="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line"><tt class="py-string">&lt;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"&gt;</tt> </tt>
-<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:foo /&gt;</tt> </tt>
-<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-135', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:foo /&gt;</tt> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</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-136" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-136', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="lxml.etree.XSLTParseError" class="py-name" href="#" onclick="return doclink('link-137', 'XSLTParseError', 'link-39');">XSLTParseError</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">                          <tt id="link-138" 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_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-138', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-139', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">,</tt> <tt id="link-140" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-140', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line"> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">        <tt class="py-name">exc</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">            <tt id="link-141" 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_elementtree._XMLPullParserTest.etree
-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-141', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-142', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-143" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-143', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-144" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-144', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="lxml.etree.XSLTParseError" class="py-name" href="#" onclick="return doclink('link-145', 'XSLTParseError', 'link-39');">XSLTParseError</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">            <tt class="py-name">exc</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">        <tt class="py-keyword">else</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">self</tt><tt class="py-op">.</tt><tt id="link-146" 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-146', 'assertFalse', 'link-146');">assertFalse</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-string">"XSLT processing should have failed but didn't"</tt><tt class="py-op">)</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</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-name">exc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</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-name">len</tt><tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">.</tt><tt id="link-147" 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-147', 'error_log', 'link-147');">error_log</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">error</tt> <tt class="py-keyword">in</tt> <tt class="py-name">exc</tt><tt class="py-op">.</tt><tt id="link-148" 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-148', 'error_log', 'link-147');">error_log</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</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">':ERROR:XSLT:'</tt> <tt class="py-keyword">in</tt> <tt id="link-149" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-149', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">error</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_parameters"></a><div id="ETreeXSLTTestCase.test_xslt_parameters-def"><a name="L271"></a><tt class="py-lineno"> 271</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="L272"></a><tt class="py-lineno"> 272</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-150" 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-145', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-150', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line">        <tt id="link-151" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-151', '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-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-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">&lt;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"&gt;</tt> </tt>
-<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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_elementtree._XMLPullParserTest.etree
-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">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;Bar&lt;/foo&gt;</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.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">'''\</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line"> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-153" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-153', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-154', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><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>
+<a name="L282"></a><tt class="py-lineno"> 282</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="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-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="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;Bar&lt;/foo&gt;</tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line">                          <tt id="link-156" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-156', '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="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_string_parameters"></a><div id="ETreeXSLTTestCase.test_xslt_string_parameters-def"><a name="L289"></a><tt class="py-lineno"> 289</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="L290"></a><tt class="py-lineno"> 290</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-157" 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-152', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-157', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">        <tt id="link-158" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-158', '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-159" 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">'''\</tt> </tt>
-<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line"><tt class="py-string">&lt;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"&gt;</tt> </tt>
-<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-159', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line"> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-160" 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_elementtree._XMLPullParserTest.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.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"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-161', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-162" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-162', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</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-163" 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_elementtree._XMLPullParserTest.etree
-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">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;it's me, "Bar"&lt;/foo&gt;</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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-163', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-164', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">.</tt><tt id="link-165" 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-165', 'strparam', 'link-165');">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="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-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="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;it's me, "Bar"&lt;/foo&gt;</tt> </tt>
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line">                          <tt id="link-166" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-166', '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="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_parameter_invalid"></a><div id="ETreeXSLTTestCase.test_xslt_parameter_invalid-def"><a name="L307"></a><tt class="py-lineno"> 307</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="L308"></a><tt class="py-lineno"> 308</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-167" 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-162', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-167', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line">        <tt id="link-168" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-168', '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-169" 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-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">&lt;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"&gt;</tt> </tt>
-<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:param name="bar"/&gt;</tt> </tt>
-<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-169', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:param name="bar"/&gt;</tt> </tt>
+<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line"> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line">        <tt class="py-name">st</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_elementtree._XMLPullParserTest.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.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.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-171', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-172" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-172', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</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-173" 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_elementtree._XMLPullParserTest.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">"&lt;test/&gt;"</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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-173', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-174" 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-174', 'XSLTApplyError', 'link-174');">XSLTApplyError</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</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">"&lt;test/&gt;"</tt><tt class="py-op">)</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</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-175" 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_elementtree._XMLPullParserTest.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_elementtree._XMLPullParserTest.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.LIBXSLT_VERSION" class="py-name" href="#" onclick="return doclink('link-173', 'LIBXSLT_VERSION', 'link-37');">LIBXSLT_VERSION</a></tt> <tt class="py-op">&lt;</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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-175', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-176', 'XSLTApplyError', 'link-174');">XSLTApplyError</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</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="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_parameter_missing"></a><div id="ETreeXSLTTestCase.test_xslt_parameter_missing-def"><a name="L324"></a><tt class="py-lineno"> 324</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="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line">        <tt class="py-comment"># apply() without needed parameter will lead to XSLTApplyError</tt> </tt>
+<a name="L326"></a><tt class="py-lineno"> 326</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-177" 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-174', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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.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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">        <tt id="link-178" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-178', '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-179" 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-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">&lt;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"&gt;</tt> </tt>
-<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-179', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line"> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">        <tt class="py-name">st</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_elementtree._XMLPullParserTest.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.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.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-181', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-182" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-182', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">        <tt class="py-comment"># at least libxslt 1.1.28 produces this error, earlier ones (e.g. 1.1.18) might not ...</tt> </tt>
+<a name="L337"></a><tt class="py-lineno"> 337</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-183" 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_elementtree._XMLPullParserTest.etree
-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-183', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-184', 'XSLTApplyError', 'link-174');">XSLTApplyError</a></tt><tt class="py-op">,</tt> <tt class="py-name">st</tt><tt class="py-op">.</tt><tt id="link-185" 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-185', 'apply', 'link-185');">apply</a></tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_multiple_parameters"></a><div id="ETreeXSLTTestCase.test_xslt_multiple_parameters-def"><a name="L339"></a><tt class="py-lineno"> 339</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="L340"></a><tt class="py-lineno"> 340</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-186" 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-183', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-186', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">        <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 class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-188" 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-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">&lt;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"&gt;</tt> </tt>
-<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
-<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$baz" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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_elementtree._XMLPullParserTest.etree
-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">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;Bar&lt;/foo&gt;&lt;foo&gt;Baz&lt;/foo&gt;</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-188', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$baz" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line"> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-189" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-189', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-190', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><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>
+<a name="L352"></a><tt class="py-lineno"> 352</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="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-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="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;Bar&lt;/foo&gt;&lt;foo&gt;Baz&lt;/foo&gt;</tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">                          <tt id="link-192" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-192', '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="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">         </tt>
+<a name="ETreeXSLTTestCase.test_xslt_parameter_xpath"></a><div id="ETreeXSLTTestCase.test_xslt_parameter_xpath-def"><a name="L359"></a><tt class="py-lineno"> 359</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="L360"></a><tt class="py-lineno"> 360</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-193" 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-190', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-193', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">        <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 class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-195" 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-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">&lt;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"&gt;</tt> </tt>
-<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
-<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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_elementtree._XMLPullParserTest.etree
-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">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-195', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line"> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-196" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-196', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-197', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><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>
+<a name="L371"></a><tt class="py-lineno"> 371</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="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-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="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line">                          <tt id="link-199" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-199', '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="L377"></a><tt class="py-lineno"> 377</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="L378"></a><tt class="py-lineno"> 378</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="L379"></a><tt class="py-lineno"> 379</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-200" 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-197', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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.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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line">        <tt id="link-201" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-201', '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-202" 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-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">&lt;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"&gt;</tt> </tt>
-<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
-<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-202', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line"> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">        <tt class="py-name">st</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_elementtree._XMLPullParserTest.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.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"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-204', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-205" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-205', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</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-206" 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_elementtree._XMLPullParserTest.etree
-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">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-206', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-207" 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-207', 'XPath', 'link-207');">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="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-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="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line">                          <tt id="link-208" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-208', '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="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line">         </tt>
+<a name="ETreeXSLTTestCase.test_xslt_default_parameters"></a><div id="ETreeXSLTTestCase.test_xslt_default_parameters-def"><a name="L397"></a><tt class="py-lineno"> 397</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="L398"></a><tt class="py-lineno"> 398</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-209" 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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-209', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">        <tt id="link-210" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-210', '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-211" 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="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line"><tt class="py-string">&lt;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"&gt;</tt> </tt>
-<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:param name="bar" select="'Default'" /&gt;</tt> </tt>
-<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
-<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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_elementtree._XMLPullParserTest.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="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">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;Bar&lt;/foo&gt;</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">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;Default&lt;/foo&gt;</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-211', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:param name="bar" select="'Default'" /&gt;</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line"> </tt>
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-212" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-212', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-213', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-214" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-214', 'style', 'link-24');">style</a></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">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="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-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="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;Bar&lt;/foo&gt;</tt> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">                          <tt id="link-215" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-215', '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="L416"></a><tt class="py-lineno"> 416</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="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-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="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;Default&lt;/foo&gt;</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">                          <tt id="link-216" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-216', '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="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">         </tt>
+<a name="ETreeXSLTTestCase.test_xslt_html_output"></a><div id="ETreeXSLTTestCase.test_xslt_html_output-def"><a name="L423"></a><tt class="py-lineno"> 423</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="L424"></a><tt class="py-lineno"> 424</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-217" 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-214', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-217', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">        <tt id="link-218" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-218', '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-219" 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-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">&lt;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"&gt;</tt> </tt>
-<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:output method="html"/&gt;</tt> </tt>
-<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:strip-space elements="*"/&gt;</tt> </tt>
-<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line"><tt class="py-string">    &lt;html&gt;&lt;body&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/body&gt;&lt;/html&gt;</tt> </tt>
-<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-219', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:output method="html"/&gt;</tt> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:strip-space elements="*"/&gt;</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line"><tt class="py-string">    &lt;html&gt;&lt;body&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/body&gt;&lt;/html&gt;</tt> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line"> </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-220" 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_elementtree._XMLPullParserTest.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">'&lt;html&gt;&lt;body&gt;B&lt;/body&gt;&lt;/html&gt;'</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.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.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-221', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-222" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-222', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</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="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-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">'&lt;html&gt;&lt;body&gt;B&lt;/body&gt;&lt;/html&gt;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">                          <tt id="link-223" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-223', '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-224" 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-224', 'strip', 'link-224');">strip</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_include"></a><div id="ETreeXSLTTestCase.test_xslt_include-def"><a name="L440"></a><tt class="py-lineno"> 440</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="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">        <tt class="py-name">tree</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_elementtree._XMLPullParserTest.etree
-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.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._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-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-226', 'parse', 'link-23');">parse</a></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>
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">        <tt class="py-name">st</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_elementtree._XMLPullParserTest.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.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.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-229', '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="L443"></a><tt class="py-lineno"> 443</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="L444"></a><tt class="py-lineno"> 444</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="L445"></a><tt class="py-lineno"> 445</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-230" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-230', '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="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line">        <tt class="py-name">tree</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_elementtree._XMLPullParserTest.etree
-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.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._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 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,Method lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close()=lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike-class.html#close"><a title="lxml.etree.TreeBuilder.close
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-232', '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="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">        <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-233" 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,Method lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close()=lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike-class.html#close"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.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.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-233', 'close', 'link-233');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-234" 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_elementtree._XMLPullParserTest.etree
-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">'&lt;a/&gt;'</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">&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;</tt> </tt>
-<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line"><tt class="py-string">        &lt;response&gt;Some text&lt;/response&gt;</tt> </tt>
-<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line"><tt class="py-string">    &lt;/xsl:template&gt;</tt> </tt>
-<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-234', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-235', '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="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_multiple_transforms"></a><div id="ETreeXSLTTestCase.test_xslt_multiple_transforms-def"><a name="L450"></a><tt class="py-lineno"> 450</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="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">        <tt id="link-236" 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-236', 'xml', 'link-236');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'&lt;a/&gt;'</tt> </tt>
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">        <tt id="link-237" 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-237', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''\</tt> </tt>
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line"><tt class="py-string">        &lt;response&gt;Some text&lt;/response&gt;</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line"><tt class="py-string">    &lt;/xsl:template&gt;</tt> </tt>
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line"><tt class="py-string">'''</tt> </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-238" 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-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.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-236');">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-240" 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-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.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-237');">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-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.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.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.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="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-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="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-246" 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_elementtree._XMLPullParserTest.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" 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.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" 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-247', 'tostring', 'link-247');">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-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">         </tt>
+<a name="L466"></a><tt class="py-lineno"> 466</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-249" 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-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-249', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-250" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-250', 'xml', 'link-236');">xml</a></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">styledoc</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.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-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.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.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-252', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">        <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 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_elementtree._XMLPullParserTest.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.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.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-255', '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="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-256" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-256', '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="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line">         </tt>
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">        <tt id="link-257" 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_elementtree._XMLPullParserTest.etree
-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">'&lt;a/&gt;'</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">&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;</tt> </tt>
-<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line"><tt class="py-string">        &lt;response&gt;Some text&lt;/response&gt;</tt> </tt>
-<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line"><tt class="py-string">    &lt;/xsl:template&gt;</tt> </tt>
-<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</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.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-247');">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-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_repeat_transform"></a><div id="ETreeXSLTTestCase.test_xslt_repeat_transform-def"><a name="L473"></a><tt class="py-lineno"> 473</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="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">        <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-236');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'&lt;a/&gt;'</tt> </tt>
+<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line">        <tt id="link-261" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-261', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''\</tt> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line"><tt class="py-string">        &lt;response&gt;Some text&lt;/response&gt;</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line"><tt class="py-string">    &lt;/xsl:template&gt;</tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line"><tt class="py-string">'''</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</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-262" 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-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-262', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-263" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-263', 'xml', 'link-236');">xml</a></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">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-264" 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-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-264', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-265" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-265', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">        <tt class="py-name">transform</tt> <tt class="py-op">=</tt> <tt id="link-266" 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_elementtree._XMLPullParserTest.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_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-266', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-267" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-267', '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="L485"></a><tt class="py-lineno"> 485</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="L486"></a><tt class="py-lineno"> 486</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="L487"></a><tt class="py-lineno"> 487</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_elementtree._XMLPullParserTest.etree
 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>
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-269', 'tostring', 'link-247');">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-117');">getroot</a></tt><tt class="py-op">(</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">'&lt;blah/&gt;'</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">        &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;</tt> </tt>
-<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:template match="/" /&gt;</tt> </tt>
-<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line"><tt class="py-string">        &lt;/xsl:stylesheet&gt;</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
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">        <tt id="link-271" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-271', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-272" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-272', 'tostring', 'link-247');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-273', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</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>
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line"> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</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="L493"></a><tt class="py-lineno"> 493</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="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-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-275" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-275', '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-276" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-276', '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="L495"></a><tt class="py-lineno"> 495</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="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line">        <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>
+</div><a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_empty"></a><div id="ETreeXSLTTestCase.test_xslt_empty-def"><a name="L498"></a><tt class="py-lineno"> 498</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="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">        <tt class="py-comment"># could segfault if result contains "empty document"</tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</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-236');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'&lt;blah/&gt;'</tt> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</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-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line"><tt class="py-string">        &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;</tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:template match="/" /&gt;</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line"><tt class="py-string">        &lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line"><tt class="py-string">        '''</tt> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line"> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</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.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-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.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-236');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</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.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-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_elementtree._XMLPullParserTest.etree
-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">'&lt;blah/&gt;'</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">        &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;</tt> </tt>
-<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line"><tt class="py-string">            &lt;xsl:message&gt;TEST TEST TEST&lt;/xsl:message&gt;</tt> </tt>
-<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line"><tt class="py-string">          &lt;/xsl:template&gt;</tt> </tt>
-<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"><tt class="py-string">        &lt;/xsl:stylesheet&gt;</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.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-237');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</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.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.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="L510"></a><tt class="py-lineno"> 510</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="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-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>
+</div><a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_message"></a><div id="ETreeXSLTTestCase.test_xslt_message-def"><a name="L513"></a><tt class="py-lineno"> 513</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="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line">        <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-236');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'&lt;blah/&gt;'</tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">        <tt id="link-290" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-290', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line"><tt class="py-string">        &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;</tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"><tt class="py-string">            &lt;xsl:message&gt;TEST TEST TEST&lt;/xsl:message&gt;</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line"><tt class="py-string">          &lt;/xsl:template&gt;</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line"><tt class="py-string">        &lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line"><tt class="py-string">        '''</tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line"> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</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-291" 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-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-291', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><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-236');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</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-293" 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-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-293', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-294" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-294', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line">        <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 id="link-296" 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_elementtree._XMLPullParserTest.etree
-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-296', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-297" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-297', '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="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</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 class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-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-299" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-299', '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="L528"></a><tt class="py-lineno"> 528</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-300" 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-300', 'message', 'link-300');">message</a></tt> </tt>
+<a name="L529"></a><tt class="py-lineno"> 529</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-301" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-301', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-302" 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-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">'&lt;blah/&gt;'</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">        &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;</tt> </tt>
-<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line"><tt class="py-string">            &lt;xsl:message terminate="yes"&gt;TEST TEST TEST&lt;/xsl:message&gt;</tt> </tt>
-<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line"><tt class="py-string">          &lt;/xsl:template&gt;</tt> </tt>
-<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line"><tt class="py-string">        &lt;/xsl:stylesheet&gt;</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.iterparse.error_log" class="py-name" href="#" onclick="return doclink('link-302', 'error_log', 'link-147');">error_log</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_message_terminate"></a><div id="ETreeXSLTTestCase.test_xslt_message_terminate-def"><a name="L531"></a><tt class="py-lineno"> 531</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="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line">        <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-236');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'&lt;blah/&gt;'</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">        <tt id="link-304" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-304', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line"><tt class="py-string">        &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line"><tt class="py-string">            &lt;xsl:message terminate="yes"&gt;TEST TEST TEST&lt;/xsl:message&gt;</tt> </tt>
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line"><tt class="py-string">          &lt;/xsl:template&gt;</tt> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"><tt class="py-string">        &lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line"><tt class="py-string">        '''</tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line"> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</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-305" 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-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-305', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-306" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-306', 'xml', 'link-236');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</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-307" 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-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.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 id="link-308" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-308', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line">        <tt id="link-309" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-309', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-310" 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_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-310', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-311" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-311', '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="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</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-312" 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_elementtree._XMLPullParserTest.etree
-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-312', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-313" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-313', 'XSLTApplyError', 'link-174');">XSLTApplyError</a></tt><tt class="py-op">,</tt> <tt id="link-314" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-314', '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="L546"></a><tt class="py-lineno"> 546</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-315" class="py-name"><a title="lxml.etree._LogEntry.message" class="py-name" href="#" onclick="return doclink('link-315', 'message', 'link-300');">message</a></tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</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-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 id="link-317" 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-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.iterparse.error_log" class="py-name" href="#" onclick="return doclink('link-317', 'error_log', 'link-147');">error_log</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_shortcut"></a><div id="ETreeXSLTTestCase.test_xslt_shortcut-def"><a name="L549"></a><tt class="py-lineno"> 549</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="L550"></a><tt class="py-lineno"> 550</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-318" 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-315', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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.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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line">        <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">self</tt><tt class="py-op">.</tt><tt id="link-320" 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-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">&lt;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"&gt;</tt> </tt>
-<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
-<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line"><tt class="py-string">    &lt;doc&gt;</tt> </tt>
-<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$baz" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line"><tt class="py-string">    &lt;/doc&gt;</tt> </tt>
-<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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">'&lt;doc&gt;&lt;foo&gt;Bar&lt;/foo&gt;&lt;foo&gt;Baz&lt;/foo&gt;&lt;/doc&gt;'</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_elementtree._XMLPullParserTest.etree
-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-320', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line"><tt class="py-string">    &lt;doc&gt;</tt> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$bar" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="$baz" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line"><tt class="py-string">    &lt;/doc&gt;</tt> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line"> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</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-237');">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 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="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>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">            <tt id="link-323" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-323', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;doc&gt;&lt;foo&gt;Bar&lt;/foo&gt;&lt;foo&gt;Baz&lt;/foo&gt;&lt;/doc&gt;'</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 id="link-324" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-324', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-325" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-325', 'tostring', 'link-247');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-326" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-326', 'getroot', 'link-117');">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="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">         </tt>
+<a name="ETreeXSLTTestCase.test_multiple_elementrees"></a><div id="ETreeXSLTTestCase.test_multiple_elementrees-def"><a name="L568"></a><tt class="py-lineno"> 568</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="L569"></a><tt class="py-lineno"> 569</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-327" 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-324', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-327', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">        <tt id="link-328" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-328', '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-329" 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-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">&lt;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"&gt;</tt> </tt>
-<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;&lt;A&gt;&lt;xsl:apply-templates/&gt;&lt;/A&gt;&lt;/xsl:template&gt;</tt> </tt>
-<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="b"&gt;&lt;B&gt;&lt;xsl:apply-templates/&gt;&lt;/B&gt;&lt;/xsl:template&gt;</tt> </tt>
-<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="c"&gt;&lt;C&gt;&lt;xsl:apply-templates/&gt;&lt;/C&gt;&lt;/xsl:template&gt;</tt> </tt>
-<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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">'&lt;A&gt;&lt;B&gt;B&lt;/B&gt;&lt;C&gt;C&lt;/C&gt;&lt;/A&gt;'</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_elementtree._XMLPullParserTest.etree
-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
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-329', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;&lt;A&gt;&lt;xsl:apply-templates/&gt;&lt;/A&gt;&lt;/xsl:template&gt;</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="b"&gt;&lt;B&gt;&lt;xsl:apply-templates/&gt;&lt;/B&gt;&lt;/xsl:template&gt;</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="c"&gt;&lt;C&gt;&lt;xsl:apply-templates/&gt;&lt;/C&gt;&lt;/xsl:template&gt;</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line"> </tt>
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-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" 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-330', '_rootstring', 'link-330');">_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="L579"></a><tt class="py-lineno"> 579</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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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">result</tt> <tt class="py-op">=</tt> <tt class="py-name">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-237');">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="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-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-330');">_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="L582"></a><tt class="py-lineno"> 582</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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</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-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-330');">_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="L584"></a><tt class="py-lineno"> 584</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">'&lt;A&gt;&lt;B&gt;B&lt;/B&gt;&lt;C&gt;C&lt;/C&gt;&lt;/A&gt;'</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>
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line">        <tt class="py-name">b_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_elementtree._XMLPullParserTest.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
-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">'&lt;b&gt;B&lt;/b&gt;'</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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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">'&lt;B&gt;B&lt;/B&gt;'</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
+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-117');">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="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-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-330');">_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="L588"></a><tt class="py-lineno"> 588</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">'&lt;b&gt;B&lt;/b&gt;'</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">result</tt> <tt class="py-op">=</tt> <tt class="py-name">b_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-237');">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="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 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-330');">_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="L591"></a><tt class="py-lineno"> 591</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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</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-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-330');">_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="L593"></a><tt class="py-lineno"> 593</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">'&lt;B&gt;B&lt;/B&gt;'</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>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">        <tt class="py-name">c_tree</tt> <tt class="py-op">=</tt> <tt id="link-349" 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_elementtree._XMLPullParserTest.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
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-349', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-350" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-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">'&lt;c&gt;C&lt;/c&gt;'</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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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">'&lt;C&gt;C&lt;/C&gt;'</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
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-350', '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-351" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-351', 'getroot', 'link-117');">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="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-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-352" 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-352', '_rootstring', 'link-330');">_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="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">                          <tt id="link-353" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-353', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;C&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</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-354" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-354', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-355" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-355', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-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-356" 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-356', '_rootstring', 'link-330');">_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="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">                          <tt id="link-357" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-357', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</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 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-358" 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-358', '_rootstring', 'link-330');">_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="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line">                          <tt id="link-359" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-359', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;C&gt;C&lt;/C&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_document_XML"></a><div id="ETreeXSLTTestCase.test_xslt_document_XML-def"><a name="L604"></a><tt class="py-lineno"> 604</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="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line">        <tt class="py-comment"># make sure document('') works from parsed strings</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">        <tt id="link-360" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-360', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-361" 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_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-361', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-362" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-362', 'XSLT', 'link-27');">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_elementtree._XMLPullParserTest.etree
-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.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" 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-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">&lt;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"&gt;</tt> </tt>
-<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;TEXT&lt;xsl:copy-of select="document('')//test"/&gt;&lt;/test&gt;</tt> </tt>
-<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</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.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-364', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;TEXT&lt;xsl:copy-of select="document('')//test"/&gt;&lt;/test&gt;</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</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">result</tt> <tt class="py-op">=</tt> <tt id="link-365" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-365', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-366" 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_elementtree._XMLPullParserTest.etree
-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-366', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-367" 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-364', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</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.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-367', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">        <tt id="link-368" 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-368', 'root', 'link-368');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-369" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-369', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-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-370" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-370', 'root', 'link-368');">root</a></tt><tt class="py-op">.</tt><tt id="link-371" 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-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
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-371', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">                          <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-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-372" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-372', 'root', 'link-368');">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-373" 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-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
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-373', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">                          <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-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-374" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-374', 'root', 'link-368');">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-375" 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-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
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-375', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">                          <tt class="py-string">'TEXT'</tt><tt class="py-op">)</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-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-376" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-376', 'root', 'link-368');">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-377" 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-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
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-377', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</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="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_document_parse"></a><div id="ETreeXSLTTestCase.test_xslt_document_parse-def"><a name="L625"></a><tt class="py-lineno"> 625</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="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">        <tt class="py-comment"># make sure document('') works from loaded files</tt> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">        <tt id="link-378" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-378', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-379" 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_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-379', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-380" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-380', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-381" 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_elementtree._XMLPullParserTest.etree
-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-381', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-382" 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-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-382', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-383" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-383', '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="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-384" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-384', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-385" 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_elementtree._XMLPullParserTest.etree
-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.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.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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">'&lt;a/&gt;'</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.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-386', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">        <tt id="link-387" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-387', 'root', 'link-368');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-388" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-388', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-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-389" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-389', 'root', 'link-368');">root</a></tt><tt class="py-op">.</tt><tt id="link-390" 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-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
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-390', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">                          <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-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-391" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-391', 'root', 'link-368');">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-392" 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-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
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-392', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</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="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_document_elementtree"></a><div id="ETreeXSLTTestCase.test_xslt_document_elementtree-def"><a name="L635"></a><tt class="py-lineno"> 635</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="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">        <tt class="py-comment"># make sure document('') works from loaded files</tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">        <tt id="link-393" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-393', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-394" 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_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-394', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-395" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-395', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-396" 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_elementtree._XMLPullParserTest.etree
-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
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-396', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-397" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-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
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-397', '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-398" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-398', '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="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-399" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-399', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-400" 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_elementtree._XMLPullParserTest.etree
-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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">'&lt;a/&gt;'</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.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-401', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</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-402" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-402', 'root', 'link-368');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-403" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-403', 'getroot', 'link-117');">getroot</a></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 class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-404" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-404', 'root', 'link-368');">root</a></tt><tt class="py-op">.</tt><tt id="link-405" 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-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
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-405', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line">                          <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-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-406" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-406', 'root', 'link-368');">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-407" 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-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
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-407', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</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="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_document_error"></a><div id="ETreeXSLTTestCase.test_xslt_document_error-def"><a name="L645"></a><tt class="py-lineno"> 645</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="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">        <tt id="link-408" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-408', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-409" 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_elementtree._XMLPullParserTest.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.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"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-410', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-411" 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_elementtree._XMLPullParserTest.etree
-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-411', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-412" 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-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">&lt;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"&gt;</tt> </tt>
-<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;TEXT&lt;xsl:copy-of select="document('uri:__junkfood__is__evil__')//test"/&gt;&lt;/test&gt;</tt> </tt>
-<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</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_elementtree._XMLPullParserTest.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.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-412', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;TEXT&lt;xsl:copy-of select="document('uri:__junkfood__is__evil__')//test"/&gt;&lt;/test&gt;</tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line"><tt class="py-string">"""</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>
+<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">        <tt class="py-name">errors</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</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-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-414" 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_elementtree._XMLPullParserTest.etree
-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.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.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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">'&lt;a/&gt;'</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">'&lt;CALLED/&gt;'</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.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-415', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-416" 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_elementtree._XMLPullParserTest.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,Method lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#XMLParser,Class xml.etree.ElementTree.XMLParser=xml.etree.ElementTree.XMLParser-class.html"><a title="lxml.etree.XMLParser
+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.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-417', 'XSLTApplyError', 'link-174');">XSLTApplyError</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt>
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">            <tt class="py-name">errors</tt> <tt class="py-op">=</tt> <tt class="py-name">exc</tt><tt class="py-op">.</tt><tt id="link-418" 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-418', 'error_log', 'link-147');">error_log</a></tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-419" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-419', 'assertFalse', 'link-146');">assertFalse</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-string">"XSLT processing should have failed but didn't"</tt><tt class="py-op">)</tt> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line"> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</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-name">len</tt><tt class="py-op">(</tt><tt class="py-name">errors</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">error</tt> <tt class="py-keyword">in</tt> <tt class="py-name">errors</tt><tt class="py-op">:</tt> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-string">':ERROR:XSLT:'</tt> <tt class="py-keyword">in</tt> <tt id="link-420" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-420', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">error</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-keyword">break</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-421" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-421', 'assertFalse', 'link-146');">assertFalse</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-string">'No XSLT errors found in error log:\n%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">errors</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L669"></a><tt class="py-lineno"> 669</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="L670"></a><tt class="py-lineno"> 670</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="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">        <tt class="py-comment"># make sure document('') works when custom resolvers are in use</tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</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="L673"></a><tt class="py-lineno"> 673</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="L674"></a><tt class="py-lineno"> 674</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="L675"></a><tt class="py-lineno"> 675</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="L676"></a><tt class="py-lineno"> 676</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="L677"></a><tt class="py-lineno"> 677</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="L678"></a><tt class="py-lineno"> 678</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-422" 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-422', 'resolve_string', 'link-422');">resolve_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;CALLED/&gt;'</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line"> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">        <tt id="link-423" 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-423', 'parser', 'link-423');">parser</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_elementtree._XMLPullParserTest.etree
+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" targets="Class lxml.etree.XMLParser=lxml.etree.XMLParser-class.html,Method lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#XMLParser,Class xml.etree.ElementTree.XMLParser=xml.etree.ElementTree.XMLParser-class.html"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.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 id="link-420" class="py-name" targets="Variable lxml.etree.iterparse.resolvers=lxml.etree.iterparse-class.html#resolvers"><a title="lxml.etree.iterparse.resolvers" class="py-name" href="#" onclick="return doclink('link-420', 'resolvers', 'link-420');">resolvers</a></tt><tt class="py-op">.</tt><tt id="link-421" class="py-name" targets="Method lxml.html.CheckboxValues.add()=lxml.html.CheckboxValues-class.html#add,Method lxml.html.Classes.add()=lxml.html.Classes-class.html#add,Method lxml.html.MultipleSelectOptions.add()=lxml.html.MultipleSelectOptions-class.html#add"><a title="lxml.html.CheckboxValues.add
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-425', 'XMLParser', 'link-425');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">        <tt id="link-426" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-426', 'parser', 'link-423');">parser</a></tt><tt class="py-op">.</tt><tt id="link-427" class="py-name" targets="Variable lxml.etree.iterparse.resolvers=lxml.etree.iterparse-class.html#resolvers"><a title="lxml.etree.iterparse.resolvers" class="py-name" href="#" onclick="return doclink('link-427', 'resolvers', 'link-427');">resolvers</a></tt><tt class="py-op">.</tt><tt id="link-428" class="py-name" targets="Method lxml.html.CheckboxValues.add()=lxml.html.CheckboxValues-class.html#add,Method lxml.html.Classes.add()=lxml.html.Classes-class.html#add,Method lxml.html.MultipleSelectOptions.add()=lxml.html.MultipleSelectOptions-class.html#add"><a title="lxml.html.CheckboxValues.add
 lxml.html.Classes.add
-lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-421', 'add', 'link-421');">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-422" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-422', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-423" class="py-name"><a title="lxml.etree
+lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-428', 'add', 'link-428');">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="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line"> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">        <tt id="link-429" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-429', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-430" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-423', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-424" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-424', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-425" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-430', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-431" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-431', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-432" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-425', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-426" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-432', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-433" 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-426', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-427" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-427', '_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">&lt;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"&gt;</tt> </tt>
-<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
-<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:for-each select="document('')//l:data/l:entry"&gt;</tt> </tt>
-<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line"><tt class="py-string">        &lt;xsl:copy-of select="document('file://ANYTHING')"/&gt;</tt> </tt>
-<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line"><tt class="py-string">        &lt;xsl:copy&gt;</tt> </tt>
-<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:attribute name="value"&gt;</tt> </tt>
-<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line"><tt class="py-string">            &lt;xsl:value-of select="."/&gt;</tt> </tt>
-<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line"><tt class="py-string">          &lt;/xsl:attribute&gt;</tt> </tt>
-<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line"><tt class="py-string">        &lt;/xsl:copy&gt;</tt> </tt>
-<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line"><tt class="py-string">      &lt;/xsl:for-each&gt;</tt> </tt>
-<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
-<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line"><tt class="py-string">  &lt;l:data&gt;</tt> </tt>
-<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line"><tt class="py-string">    &lt;l:entry&gt;A&lt;/l:entry&gt;</tt> </tt>
-<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line"><tt class="py-string">    &lt;l:entry&gt;B&lt;/l:entry&gt;</tt> </tt>
-<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line"><tt class="py-string">  &lt;/l:data&gt;</tt> </tt>
-<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</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-428" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-428', '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-429" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-429', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-430" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-430', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-431" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-433', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-434" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-434', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line"><tt class="py-string">   xmlns:l="local"&gt;</tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:for-each select="document('')//l:data/l:entry"&gt;</tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line"><tt class="py-string">        &lt;xsl:copy-of select="document('file://ANYTHING')"/&gt;</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line"><tt class="py-string">        &lt;xsl:copy&gt;</tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:attribute name="value"&gt;</tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line"><tt class="py-string">            &lt;xsl:value-of select="."/&gt;</tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line"><tt class="py-string">          &lt;/xsl:attribute&gt;</tt> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line"><tt class="py-string">        &lt;/xsl:copy&gt;</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line"><tt class="py-string">      &lt;/xsl:for-each&gt;</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line"><tt class="py-string">  &lt;l:data&gt;</tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line"><tt class="py-string">    &lt;l:entry&gt;A&lt;/l:entry&gt;</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line"><tt class="py-string">    &lt;l:entry&gt;B&lt;/l:entry&gt;</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line"><tt class="py-string">  &lt;/l:data&gt;</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-435" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-435', 'parser', 'link-423');">parser</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line"> </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 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="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-436" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-436', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-437" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-437', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-438" 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-431', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</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-432" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-432', '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-433" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-433', '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-434" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-434', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-435" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-438', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</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 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="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-439" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-439', 'root', 'link-368');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-440" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-440', 'getroot', 'link-117');">getroot</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 class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-441" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-441', 'root', 'link-368');">root</a></tt><tt class="py-op">.</tt><tt id="link-442" 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-435', '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-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-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-437" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-437', '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-438" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-442', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">                          <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-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-443" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-443', 'root', 'link-368');">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="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line"> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-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-368');">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-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-438', '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-439" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-439', '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-440" 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-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">                          <tt class="py-string">'CALLED'</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">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-368');">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-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-440', '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-441" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-441', '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-442" 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-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line">                          <tt class="py-string">'{local}entry'</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 id="link-448" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-448', 'root', 'link-368');">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-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-442', '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-443" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-443', '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-444" 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-449', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line">                          <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-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-368');">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-451" 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-444', 'get', 'link-444');">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-445" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-445', '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-446" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-451', 'get', 'link-451');">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="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">                          <tt class="py-string">'A'</tt><tt class="py-op">)</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-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-452" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-452', 'root', 'link-368');">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-453" 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-446', '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-447" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-447', '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-448" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-453', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">                          <tt class="py-string">'CALLED'</tt><tt class="py-op">)</tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-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-454" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-454', 'root', 'link-368');">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-455" 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-448', '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-449" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-449', '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-450" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-455', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">                          <tt class="py-string">'{local}entry'</tt><tt class="py-op">)</tt> </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 id="link-456" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-456', 'root', 'link-368');">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-457" 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-450', '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-451" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-451', '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-452" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-457', 'text', 'link-375');">text</a></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">None</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 id="link-458" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-458', 'root', 'link-368');">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-459" 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-452', 'get', 'link-444');">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-453" class="py-name"><a title="lxml.etree.Resolver.resolve_string" class="py-name" href="#" onclick="return doclink('link-453', 'resolve_string', 'link-415');">resolve_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;CALLED/&gt;'</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-454" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-454', '_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">&lt;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"&gt;</tt> </tt>
-<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:copy-of select="document('test.xml')"/&gt;</tt> </tt>
-<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</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-455" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-455', 'parser', 'link-416');">parser</a></tt> <tt class="py-op">=</tt> <tt id="link-456" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-456', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-457" class="py-name"><a title="lxml.etree.XMLParser
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-459', 'get', 'link-451');">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="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">                          <tt class="py-string">'B'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L731"></a><tt class="py-lineno"> 731</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="L732"></a><tt class="py-lineno"> 732</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="L733"></a><tt class="py-lineno"> 733</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="L734"></a><tt class="py-lineno"> 734</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="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-name">None</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</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="L737"></a><tt class="py-lineno"> 737</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="L738"></a><tt class="py-lineno"> 738</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="L739"></a><tt class="py-lineno"> 739</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="L740"></a><tt class="py-lineno"> 740</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-460" class="py-name"><a title="lxml.etree.Resolver.resolve_string" class="py-name" href="#" onclick="return doclink('link-460', 'resolve_string', 'link-422');">resolve_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;CALLED/&gt;'</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">)</tt> </tt>
+</div></div><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-name">stylesheet_xml</tt> <tt class="py-op">=</tt> <tt id="link-461" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-461', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line"><tt class="py-string">   xmlns:l="local"&gt;</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:copy-of select="document('test.xml')"/&gt;</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line"><tt class="py-string">"""</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 id="link-462" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-462', 'parser', 'link-423');">parser</a></tt> <tt class="py-op">=</tt> <tt id="link-463" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-463', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-464" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-457', '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-458" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-458', 'parser', 'link-416');">parser</a></tt><tt class="py-op">.</tt><tt id="link-459" class="py-name"><a title="lxml.etree.iterparse.resolvers" class="py-name" href="#" onclick="return doclink('link-459', 'resolvers', 'link-420');">resolvers</a></tt><tt class="py-op">.</tt><tt id="link-460" class="py-name"><a title="lxml.html.CheckboxValues.add
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-464', 'XMLParser', 'link-425');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">        <tt id="link-465" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-465', 'parser', 'link-423');">parser</a></tt><tt class="py-op">.</tt><tt id="link-466" class="py-name"><a title="lxml.etree.iterparse.resolvers" class="py-name" href="#" onclick="return doclink('link-466', 'resolvers', 'link-427');">resolvers</a></tt><tt class="py-op">.</tt><tt id="link-467" class="py-name"><a title="lxml.html.CheckboxValues.add
 lxml.html.Classes.add
-lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-460', 'add', 'link-421');">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 =&gt; 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-461" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-461', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-462" class="py-name"><a title="lxml.etree
+lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-467', 'add', 'link-428');">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="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line"> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">        <tt class="py-comment"># test without base_url =&gt; relative path only</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</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="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">        <tt id="link-468" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-468', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-469" 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_elementtree._XMLPullParserTest.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-469', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-470" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-470', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-471" 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_elementtree._XMLPullParserTest.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-471', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-472" 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-361');">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-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-467" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-467', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-468" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-472', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-name">stylesheet_xml</tt><tt class="py-op">,</tt> <tt id="link-473" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-473', 'parser', 'link-423');">parser</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line"> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-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="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-474" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-474', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-475" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-468', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-469" class="py-name"><a title="lxml.etree.XML
+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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-469', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</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-string">'MY/BASE/test.xml'</tt>  <tt class="py-comment"># seems to be the same on Windows</tt> </tt>
-<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line">        <tt id="link-470" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-470', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-471" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-476', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</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">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="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line"> </tt>
+<a name="L763"></a><tt class="py-lineno"> 763</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="L764"></a><tt class="py-lineno"> 764</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="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line">        <tt class="py-name">expected_url</tt> <tt class="py-op">=</tt> <tt class="py-string">'MY/BASE/test.xml'</tt>  <tt class="py-comment"># seems to be the same on Windows</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">        <tt id="link-477" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-477', 'xslt', 'link-237');">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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-471', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-472" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-472', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-473" class="py-name"><a title="lxml.etree
+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.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-479', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-480" 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_elementtree._XMLPullParserTest.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.XML
+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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-474', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">            <tt class="py-name">stylesheet_xml</tt><tt class="py-op">,</tt> <tt id="link-475" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-475', 'parser', 'link-416');">parser</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">            <tt id="link-476" 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-476', 'base_url', 'link-476');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-477" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-477', '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="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line"> </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 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="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-478" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-478', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-479" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-481', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">            <tt class="py-name">stylesheet_xml</tt><tt class="py-op">,</tt> <tt id="link-482" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-482', 'parser', 'link-423');">parser</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">            <tt id="link-483" 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-483', 'base_url', 'link-483');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-484" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-484', '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="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 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="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-485" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-485', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-486" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-479', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-480" class="py-name"><a title="lxml.etree.XML
+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.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-480', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-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="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line"> </tt>
-<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">        <tt class="py-comment"># now the same thing with a stylesheet base URL</tt> </tt>
-<a name="L754"></a><tt class="py-lineno"> 754</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="L755"></a><tt class="py-lineno"> 755</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="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">        <tt id="link-481" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-481', 'xslt', 'link-234');">xslt</a></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-487', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-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="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line"> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line">        <tt class="py-comment"># now the same thing with a stylesheet base URL</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</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="L776"></a><tt class="py-lineno"> 776</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="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">        <tt id="link-488" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-488', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-489" 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_elementtree._XMLPullParserTest.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"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-483', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-484" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-489', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-490" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-490', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-491" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-484', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-485" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-491', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-492" 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-485', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">            <tt class="py-name">stylesheet_xml</tt><tt class="py-op">,</tt> <tt id="link-486" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-486', 'parser', 'link-416');">parser</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">            <tt id="link-487" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-487', 'base_url', 'link-476');">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="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line"> </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">0</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">result</tt> <tt class="py-op">=</tt> <tt id="link-488" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-488', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-489" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-492', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">            <tt class="py-name">stylesheet_xml</tt><tt class="py-op">,</tt> <tt id="link-493" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-493', 'parser', 'link-423');">parser</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">            <tt id="link-494" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-494', 'base_url', 'link-483');">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="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line"> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-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="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-495" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-495', 'xslt', 'link-237');">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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-489', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-490" class="py-name"><a title="lxml.etree.XML
+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.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-490', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</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">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="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line"> </tt>
-<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">        <tt class="py-comment"># now the same thing with a stylesheet base file:// URL</tt> </tt>
-<a name="L765"></a><tt class="py-lineno"> 765</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="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">        <tt class="py-name">expected_url</tt> <tt class="py-op">=</tt> <tt class="py-string">'file://BASE/DIR/test.xml'</tt> </tt>
-<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">        <tt id="link-491" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-491', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-492" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-497', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</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">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="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-comment"># now the same thing with a stylesheet base file:// URL</tt> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</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="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">        <tt class="py-name">expected_url</tt> <tt class="py-op">=</tt> <tt class="py-string">'file://BASE/DIR/test.xml'</tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">        <tt id="link-498" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-498', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-499" 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_elementtree._XMLPullParserTest.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.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-493', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-494" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-499', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-500" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-500', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-501" 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_elementtree._XMLPullParserTest.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.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-501', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-502" 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-495', 'XML', 'link-361');">XML</a></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">stylesheet_xml</tt><tt class="py-op">,</tt> <tt id="link-496" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-496', 'parser', 'link-416');">parser</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">            <tt id="link-497" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-497', 'base_url', 'link-476');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">'file://BASE/DIR/FILE'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line"> </tt>
-<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-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="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-498" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-498', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-499" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-502', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">            <tt class="py-name">stylesheet_xml</tt><tt class="py-op">,</tt> <tt id="link-503" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-503', 'parser', 'link-423');">parser</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line">            <tt id="link-504" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-504', 'base_url', 'link-483');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">'file://BASE/DIR/FILE'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line"> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-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="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-505" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-505', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-506" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-499', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-500" class="py-name"><a title="lxml.etree.XML
+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.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-500', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-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="L774"></a><tt class="py-lineno"> 774</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="L775"></a><tt class="py-lineno"> 775</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="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 id="link-501" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-507', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-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="L795"></a><tt class="py-lineno"> 795</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="L796"></a><tt class="py-lineno"> 796</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="L797"></a><tt class="py-lineno"> 797</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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-501', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-502" 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-502', 'XSLTAccessControl', 'link-502');">XSLTAccessControl</a></tt><tt class="py-op">(</tt><tt id="link-503" 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-503', 'read_file', 'link-503');">read_file</a></tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
-<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">        <tt id="link-504" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-504', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-505" 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" targets="Class lxml.etree.XSLTAccessControl=lxml.etree.XSLTAccessControl-class.html"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-509', 'XSLTAccessControl', 'link-509');">XSLTAccessControl</a></tt><tt class="py-op">(</tt><tt id="link-510" 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-510', 'read_file', 'link-510');">read_file</a></tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</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-237');">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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-505', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-506" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-506', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-507" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-507', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-508" 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-508', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-509" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-509', '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="L778"></a><tt class="py-lineno"> 778</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="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-510" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-510', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-511" 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="L799"></a><tt class="py-lineno"> 799</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="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-517" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-517', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-518" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-511', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-512" class="py-name"><a title="lxml.etree.XML
+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.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-512', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">        <tt id="link-513" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-513', '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-514" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-514', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-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-515" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-515', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-516" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-519', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">        <tt id="link-520" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-520', 'root', 'link-368');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-521" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-521', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-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-522" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-522', 'root', 'link-368');">root</a></tt><tt class="py-op">.</tt><tt id="link-523" 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-516', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">                         <tt class="py-string">'test'</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">assertEqual</tt><tt class="py-op">(</tt><tt id="link-517" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-517', '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-518" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-523', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">                         <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-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-524" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-524', 'root', 'link-368');">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-525" 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-518', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L784"></a><tt class="py-lineno"> 784</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="L785"></a><tt class="py-lineno"> 785</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="L786"></a><tt class="py-lineno"> 786</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="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">        <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt id="link-519" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-525', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</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="L806"></a><tt class="py-lineno"> 806</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="L807"></a><tt class="py-lineno"> 807</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="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">        <tt class="py-name">access_control</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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-519', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-520" class="py-name"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-520', 'XSLTAccessControl', 'link-502');">XSLTAccessControl</a></tt><tt class="py-op">(</tt><tt id="link-521" class="py-name"><a title="lxml.tests.common_imports.read_file" class="py-name" href="#" onclick="return doclink('link-521', 'read_file', 'link-503');">read_file</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">        <tt id="link-522" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-522', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-523" 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.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-527', 'XSLTAccessControl', 'link-509');">XSLTAccessControl</a></tt><tt class="py-op">(</tt><tt id="link-528" class="py-name"><a title="lxml.tests.common_imports.read_file" class="py-name" href="#" onclick="return doclink('link-528', 'read_file', 'link-510');">read_file</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">        <tt id="link-529" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-529', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-530" 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_elementtree._XMLPullParserTest.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.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-524', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-525" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-530', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-531" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-531', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-532" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-525', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-526" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-532', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-533" 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-526', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-527" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-527', '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="L789"></a><tt class="py-lineno"> 789</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="L790"></a><tt class="py-lineno"> 790</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-528" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-533', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-534" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-534', '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="L810"></a><tt class="py-lineno"> 810</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="L811"></a><tt class="py-lineno"> 811</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-535" 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_elementtree._XMLPullParserTest.etree
-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.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-529', 'XSLTApplyError', 'link-169');">XSLTApplyError</a></tt><tt class="py-op">,</tt> <tt id="link-530" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-530', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-531" class="py-name"><a title="lxml.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.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-536', 'XSLTApplyError', 'link-174');">XSLTApplyError</a></tt><tt class="py-op">,</tt> <tt id="link-537" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-537', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-538" 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_elementtree._XMLPullParserTest.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.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-538', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-539" 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-532', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L791"></a><tt class="py-lineno"> 791</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="L792"></a><tt class="py-lineno"> 792</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="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">        <tt class="py-name">access_control</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-539', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L812"></a><tt class="py-lineno"> 812</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="L813"></a><tt class="py-lineno"> 813</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="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">        <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt id="link-540" 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_elementtree._XMLPullParserTest.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.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-534', 'XSLTAccessControl', 'link-502');">XSLTAccessControl</a></tt><tt class="py-op">.</tt><tt id="link-535" 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-535', 'DENY_ALL', 'link-535');">DENY_ALL</a></tt> </tt>
-<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">        <tt id="link-536" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-536', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-537" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-540', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-541" class="py-name"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-541', 'XSLTAccessControl', 'link-509');">XSLTAccessControl</a></tt><tt class="py-op">.</tt><tt id="link-542" 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-542', 'DENY_ALL', 'link-542');">DENY_ALL</a></tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">        <tt id="link-543" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-543', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-544" 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_elementtree._XMLPullParserTest.etree
-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.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-538', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-539" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-544', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-545" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-545', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-546" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-539', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-540" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-546', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-547" 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-540', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-541" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-541', '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="L795"></a><tt class="py-lineno"> 795</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="L796"></a><tt class="py-lineno"> 796</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-542" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-547', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-548" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-548', '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="L816"></a><tt class="py-lineno"> 816</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="L817"></a><tt class="py-lineno"> 817</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-549" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-542', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-543" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-543', 'XSLTApplyError', 'link-169');">XSLTApplyError</a></tt><tt class="py-op">,</tt> <tt id="link-544" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-544', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-545" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-549', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-550" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-550', 'XSLTApplyError', 'link-174');">XSLTApplyError</a></tt><tt class="py-op">,</tt> <tt id="link-551" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-551', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-552" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-545', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-546" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-552', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-553" 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-546', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_access_control_repr"></a><div id="ETreeXSLTTestCase.test_xslt_access_control_repr-def"><a name="L798"></a><tt class="py-lineno"> 798</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_access_control_repr-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_access_control_repr');">-</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_access_control_repr">test_xslt_access_control_repr</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_access_control_repr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_access_control_repr-expanded"><a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">        <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt id="link-547" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-553', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_access_control_repr"></a><div id="ETreeXSLTTestCase.test_xslt_access_control_repr-def"><a name="L819"></a><tt class="py-lineno"> 819</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_access_control_repr-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_access_control_repr');">-</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_access_control_repr">test_xslt_access_control_repr</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_access_control_repr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_access_control_repr-expanded"><a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">        <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt id="link-554" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-547', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-548" class="py-name"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-548', 'XSLTAccessControl', 'link-502');">XSLTAccessControl</a></tt><tt class="py-op">.</tt><tt id="link-549" class="py-name"><a title="lxml.etree.XSLTAccessControl.DENY_ALL" class="py-name" href="#" onclick="return doclink('link-549', 'DENY_ALL', 'link-535');">DENY_ALL</a></tt> </tt>
-<a name="L800"></a><tt class="py-lineno"> 800</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-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">access_control</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt id="link-550" 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-550', 'type', 'link-550');">type</a></tt><tt class="py-op">(</tt><tt class="py-name">access_control</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-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">repr</tt><tt class="py-op">(</tt><tt class="py-name">access_control</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">access_control</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-name">repr</tt><tt class="py-op">(</tt><tt id="link-551" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-554', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-555" class="py-name"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-555', 'XSLTAccessControl', 'link-509');">XSLTAccessControl</a></tt><tt class="py-op">.</tt><tt id="link-556" class="py-name"><a title="lxml.etree.XSLTAccessControl.DENY_ALL" class="py-name" href="#" onclick="return doclink('link-556', 'DENY_ALL', 'link-542');">DENY_ALL</a></tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</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-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">access_control</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt id="link-557" 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-557', 'type', 'link-557');">type</a></tt><tt class="py-op">(</tt><tt class="py-name">access_control</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-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">repr</tt><tt class="py-op">(</tt><tt class="py-name">access_control</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">access_control</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-name">repr</tt><tt class="py-op">(</tt><tt id="link-558" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-551', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-552" class="py-name"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-552', 'XSLTAccessControl', 'link-502');">XSLTAccessControl</a></tt><tt class="py-op">.</tt><tt id="link-553" class="py-name"><a title="lxml.etree.XSLTAccessControl.DENY_ALL" class="py-name" href="#" onclick="return doclink('link-553', 'DENY_ALL', 'link-535');">DENY_ALL</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">                            <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt id="link-554" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-558', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-559" class="py-name"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-559', 'XSLTAccessControl', 'link-509');">XSLTAccessControl</a></tt><tt class="py-op">.</tt><tt id="link-560" class="py-name"><a title="lxml.etree.XSLTAccessControl.DENY_ALL" class="py-name" href="#" onclick="return doclink('link-560', 'DENY_ALL', 'link-542');">DENY_ALL</a></tt><tt class="py-op">)</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">repr</tt><tt class="py-op">(</tt><tt id="link-561" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-554', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-555" class="py-name"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-555', 'XSLTAccessControl', 'link-502');">XSLTAccessControl</a></tt><tt class="py-op">.</tt><tt id="link-556" class="py-name" targets="Variable lxml.etree.XSLTAccessControl.DENY_WRITE=lxml.etree.XSLTAccessControl-class.html#DENY_WRITE"><a title="lxml.etree.XSLTAccessControl.DENY_WRITE" class="py-name" href="#" onclick="return doclink('link-556', 'DENY_WRITE', 'link-556');">DENY_WRITE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-name">repr</tt><tt class="py-op">(</tt><tt id="link-557" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-561', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-562" class="py-name"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-562', 'XSLTAccessControl', 'link-509');">XSLTAccessControl</a></tt><tt class="py-op">.</tt><tt id="link-563" class="py-name" targets="Variable lxml.etree.XSLTAccessControl.DENY_WRITE=lxml.etree.XSLTAccessControl-class.html#DENY_WRITE"><a title="lxml.etree.XSLTAccessControl.DENY_WRITE" class="py-name" href="#" onclick="return doclink('link-563', 'DENY_WRITE', 'link-563');">DENY_WRITE</a></tt><tt class="py-op">)</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">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-name">repr</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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-557', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-558" class="py-name"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-558', 'XSLTAccessControl', 'link-502');">XSLTAccessControl</a></tt><tt class="py-op">.</tt><tt id="link-559" class="py-name"><a title="lxml.etree.XSLTAccessControl.DENY_ALL" class="py-name" href="#" onclick="return doclink('link-559', 'DENY_ALL', 'link-535');">DENY_ALL</a></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 class="py-name">repr</tt><tt class="py-op">(</tt><tt id="link-560" class="py-name"><a title="lxml.etree
+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.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-565', 'XSLTAccessControl', 'link-509');">XSLTAccessControl</a></tt><tt class="py-op">.</tt><tt id="link-566" class="py-name"><a title="lxml.etree.XSLTAccessControl.DENY_ALL" class="py-name" href="#" onclick="return doclink('link-566', 'DENY_ALL', 'link-542');">DENY_ALL</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">                            <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt id="link-567" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-560', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-561" class="py-name"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-561', 'XSLTAccessControl', 'link-502');">XSLTAccessControl</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="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_move_result"></a><div id="ETreeXSLTTestCase.test_xslt_move_result-def"><a name="L807"></a><tt class="py-lineno"> 807</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="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">        <tt id="link-562" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-562', 'root', 'link-365');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-563" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-567', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-568" class="py-name"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-568', 'XSLTAccessControl', 'link-509');">XSLTAccessControl</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="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_move_result"></a><div id="ETreeXSLTTestCase.test_xslt_move_result-def"><a name="L828"></a><tt class="py-lineno"> 828</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="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">        <tt id="link-569" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-569', 'root', 'link-368');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-570" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-563', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-564" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-570', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-571" 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-564', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-565" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-565', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line"><tt class="py-string">        &lt;transform&gt;</tt> </tt>
-<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line"><tt class="py-string">          &lt;widget displayType="fieldset"/&gt;</tt> </tt>
-<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line"><tt class="py-string">        &lt;/transform&gt;'''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line"> </tt>
-<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">        <tt id="link-566" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-566', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-567" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-571', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-572" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-572', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line"><tt class="py-string">        &lt;transform&gt;</tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line"><tt class="py-string">          &lt;widget displayType="fieldset"/&gt;</tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line"><tt class="py-string">        &lt;/transform&gt;'''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line"> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">        <tt id="link-573" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-573', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-574" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-567', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-568" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-568', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-569" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-574', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-575" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-575', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-576" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-569', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-570" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-576', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-577" 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-570', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-571" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-571', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line"><tt class="py-string">        &lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:output method="html" indent="no"/&gt;</tt> </tt>
-<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line"><tt class="py-string">            &lt;html&gt;</tt> </tt>
-<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line"><tt class="py-string">              &lt;xsl:apply-templates/&gt;</tt> </tt>
-<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line"><tt class="py-string">            &lt;/html&gt;</tt> </tt>
-<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line"><tt class="py-string">          &lt;/xsl:template&gt;</tt> </tt>
-<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
-<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:template match="widget"&gt;</tt> </tt>
-<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line"><tt class="py-string">            &lt;xsl:element name="{@displayType}"/&gt;</tt> </tt>
-<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line"><tt class="py-string">          &lt;/xsl:template&gt;</tt> </tt>
-<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
-<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line"><tt class="py-string">        &lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line"> </tt>
-<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-572" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-572', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-573" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-573', '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="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">        <tt id="link-574" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-574', '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-575" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-575', '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="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt id="link-576" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-576', 'root', 'link-365');">root</a></tt> <tt class="py-comment"># segfaulted before</tt> </tt>
-</div><a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">         </tt>
-<a name="ETreeXSLTTestCase.test_xslt_pi"></a><div id="ETreeXSLTTestCase.test_xslt_pi-def"><a name="L832"></a><tt class="py-lineno"> 832</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="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-577" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-577', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-578" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-578', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line"><tt class="py-string">        &lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:output method="html" indent="no"/&gt;</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line"><tt class="py-string">            &lt;html&gt;</tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line"><tt class="py-string">              &lt;xsl:apply-templates/&gt;</tt> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line"><tt class="py-string">            &lt;/html&gt;</tt> </tt>
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line"><tt class="py-string">          &lt;/xsl:template&gt;</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:template match="widget"&gt;</tt> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line"><tt class="py-string">            &lt;xsl:element name="{@displayType}"/&gt;</tt> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line"><tt class="py-string">          &lt;/xsl:template&gt;</tt> </tt>
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line"><tt class="py-string">        &lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line"> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-579" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-579', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-580" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-580', 'root', 'link-368');">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="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">        <tt id="link-581" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-581', 'root', 'link-368');">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-582" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-582', 'getroot', 'link-117');">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="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt id="link-583" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-583', 'root', 'link-368');">root</a></tt> <tt class="py-comment"># segfaulted before</tt> </tt>
+</div><a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">         </tt>
+<a name="ETreeXSLTTestCase.test_xslt_pi"></a><div id="ETreeXSLTTestCase.test_xslt_pi-def"><a name="L853"></a><tt class="py-lineno"> 853</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="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-584" 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-577', '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">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl" href="%s"?&gt;</tt> </tt>
-<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
-<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
-<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
-<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</tt> <tt class="py-op">%</tt> <tt id="link-578" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-578', '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="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 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-579" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-579', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-580" 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-580', 'getprevious', 'link-580');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-581" 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-581', 'parseXSL', 'link-581');">parseXSL</a></tt><tt class="py-op">(</tt><tt class="py-op">)</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-121');">getroot</a></tt><tt class="py-op">(</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">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="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">                          <tt class="py-name">style_root</tt><tt class="py-op">.</tt><tt id="link-583" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-584', '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">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl" href="%s"?&gt;</tt> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</tt> <tt class="py-op">%</tt> <tt id="link-585" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-585', '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="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 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-586" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-586', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-587" 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-587', 'getprevious', 'link-587');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-588" 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-588', 'parseXSL', 'link-588');">parseXSL</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-589" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-589', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-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="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">                          <tt class="py-name">style_root</tt><tt class="py-op">.</tt><tt id="link-590" 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-583', 'tag', 'link-368');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L844"></a><tt class="py-lineno"> 844</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="L845"></a><tt class="py-lineno"> 845</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="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">        <tt class="py-comment"># test xml:id dictionary lookup mechanism</tt> </tt>
-<a name="L847"></a><tt class="py-lineno"> 847</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-584" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-590', 'tag', 'link-371');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L865"></a><tt class="py-lineno"> 865</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="L866"></a><tt class="py-lineno"> 866</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="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line">        <tt class="py-comment"># test xml:id dictionary lookup mechanism</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</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-591" 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-584', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl" href="#style"?&gt;</tt> </tt>
-<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
-<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
-<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
-<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:stylesheet version="1.0" xml:id="style"</tt> </tt>
-<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line"><tt class="py-string">      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:template match="*" /&gt;</tt> </tt>
-<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"><tt class="py-string">      &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-string">    &lt;/xsl:template&gt;</tt> </tt>
-<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:stylesheet&gt;</tt> </tt>
-<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</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 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-585" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-585', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-586" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-586', 'getprevious', 'link-580');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-587" class="py-name"><a title="lxml.etree._XSLTProcessingInstruction.parseXSL" class="py-name" href="#" onclick="return doclink('link-587', 'parseXSL', 'link-581');">parseXSL</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-588" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-588', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-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="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">                          <tt class="py-name">style_root</tt><tt class="py-op">.</tt><tt id="link-589" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-591', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl" href="#style"?&gt;</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:stylesheet version="1.0" xml:id="style"</tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line"><tt class="py-string">      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:template match="*" /&gt;</tt> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line"><tt class="py-string">      &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line"><tt class="py-string">    &lt;/xsl:template&gt;</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line"> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</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-592" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-592', 'getroot', 'link-117');">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-587');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-594" class="py-name"><a title="lxml.etree._XSLTProcessingInstruction.parseXSL" class="py-name" href="#" onclick="return doclink('link-594', 'parseXSL', 'link-588');">parseXSL</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-595" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-595', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-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="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line">                          <tt class="py-name">style_root</tt><tt class="py-op">.</tt><tt id="link-596" 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-589', 'tag', 'link-368');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line"> </tt>
-<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-590" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-596', 'tag', 'link-371');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line"> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-597" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-590', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-591" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-591', '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="L867"></a><tt class="py-lineno"> 867</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="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-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="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
-<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">                          <tt id="link-592" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-592', '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="L873"></a><tt class="py-lineno"> 873</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="L874"></a><tt class="py-lineno"> 874</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="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line">        <tt class="py-comment"># test XPath lookup mechanism</tt> </tt>
-<a name="L876"></a><tt class="py-lineno"> 876</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-593" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-597', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-598" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-598', '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="L888"></a><tt class="py-lineno"> 888</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="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-string">'''\</tt> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">                          <tt id="link-599" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-599', '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="L894"></a><tt class="py-lineno"> 894</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="L895"></a><tt class="py-lineno"> 895</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="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">        <tt class="py-comment"># test XPath lookup mechanism</tt> </tt>
+<a name="L897"></a><tt class="py-lineno"> 897</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.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-593', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl" href="#style"?&gt;</tt> </tt>
-<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
-<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
-<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
-<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line"> </tt>
-<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">        <tt id="link-594" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-594', '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-595" class="py-name"><a title="lxml.etree._ElementTree.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="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl" href="#style"?&gt;</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line"> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line">        <tt id="link-601" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-601', '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-602" 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-595', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0" xml:id="style"</tt> </tt>
-<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
-<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
-<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line"> </tt>
-<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">        <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-596" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-596', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-597" 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-597', 'append', 'link-597');">append</a></tt><tt class="py-op">(</tt><tt id="link-598" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-598', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-599" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-599', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line"> </tt>
-<a name="L896"></a><tt class="py-lineno"> 896</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-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-580');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-602" class="py-name"><a title="lxml.etree._XSLTProcessingInstruction.parseXSL" class="py-name" href="#" onclick="return doclink('link-602', 'parseXSL', 'link-581');">parseXSL</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._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-603', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-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="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">                          <tt class="py-name">style_root</tt><tt class="py-op">.</tt><tt id="link-604" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-602', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0" xml:id="style"</tt> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line"> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">        <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-603" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-603', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-604" 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-604', 'append', 'link-604');">append</a></tt><tt class="py-op">(</tt><tt id="link-605" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-605', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-606" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-606', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line"> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</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-607" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-607', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-608" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-608', 'getprevious', 'link-587');">getprevious</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._XSLTProcessingInstruction.parseXSL" class="py-name" href="#" onclick="return doclink('link-609', 'parseXSL', 'link-588');">parseXSL</a></tt><tt class="py-op">(</tt><tt class="py-op">)</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-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-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="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">                          <tt class="py-name">style_root</tt><tt class="py-op">.</tt><tt id="link-611" 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-604', 'tag', 'link-368');">tag</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 class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-605" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-611', 'tag', 'link-371');">tag</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 class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-612" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-605', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-606" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-606', '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="L901"></a><tt class="py-lineno"> 901</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="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">'''\</tt> </tt>
-<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
-<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line">                          <tt id="link-607" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-607', '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="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_pi_get"></a><div id="ETreeXSLTTestCase.test_xslt_pi_get-def"><a name="L908"></a><tt class="py-lineno"> 908</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="L909"></a><tt class="py-lineno"> 909</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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-612', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-613" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-613', '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="L922"></a><tt class="py-lineno"> 922</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="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">'''\</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">                          <tt id="link-614" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-614', '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="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_pi_get"></a><div id="ETreeXSLTTestCase.test_xslt_pi_get-def"><a name="L929"></a><tt class="py-lineno"> 929</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="L930"></a><tt class="py-lineno"> 930</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-615" 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-608', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl" href="TEST"?&gt;</tt> </tt>
-<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
-<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
-<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
-<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line"> </tt>
-<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">        <tt id="link-609" 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-609', 'pi', 'link-609');">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-580');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-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-612" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-612', 'pi', 'link-609');">pi</a></tt><tt class="py-op">.</tt><tt id="link-613" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-615', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl" href="TEST"?&gt;</tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">        <tt id="link-616" 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-616', 'pi', 'link-616');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-617" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-617', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-618" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-618', 'getprevious', 'link-587');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-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-619" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-619', 'pi', 'link-616');">pi</a></tt><tt class="py-op">.</tt><tt id="link-620" 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-613', 'get', 'link-444');">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="L919"></a><tt class="py-lineno"> 919</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="L920"></a><tt class="py-lineno"> 920</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="L921"></a><tt class="py-lineno"> 921</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._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-620', 'get', 'link-451');">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="L940"></a><tt class="py-lineno"> 940</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="L941"></a><tt class="py-lineno"> 941</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="L942"></a><tt class="py-lineno"> 942</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-621" 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-614', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl" href="TEST"?&gt;</tt> </tt>
-<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
-<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
-<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
-<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</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-615" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-615', 'pi', 'link-609');">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-580');">getprevious</a></tt><tt class="py-op">(</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">"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-609');">pi</a></tt><tt class="py-op">.</tt><tt id="link-619" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-621', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl" href="TEST"?&gt;</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</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-622" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-622', 'pi', 'link-616');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-623" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-623', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-624" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-624', 'getprevious', 'link-587');">getprevious</a></tt><tt class="py-op">(</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">"TEST"</tt><tt class="py-op">,</tt> <tt id="link-625" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-625', 'pi', 'link-616');">pi</a></tt><tt class="py-op">.</tt><tt id="link-626" 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-619', 'get', 'link-444');">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="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-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-620" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-620', 'pi', 'link-609');">pi</a></tt><tt class="py-op">.</tt><tt id="link-621" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-626', 'get', 'link-451');">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="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-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-627" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-627', 'pi', 'link-616');">pi</a></tt><tt class="py-op">.</tt><tt id="link-628" 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-444');">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="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-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-622" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-622', 'pi', 'link-609');">pi</a></tt><tt class="py-op">.</tt><tt id="link-623" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-628', 'get', 'link-451');">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="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-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-629" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-629', 'pi', 'link-616');">pi</a></tt><tt class="py-op">.</tt><tt id="link-630" 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-623', 'get', 'link-444');">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="L933"></a><tt class="py-lineno"> 933</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="L934"></a><tt class="py-lineno"> 934</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="L935"></a><tt class="py-lineno"> 935</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._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-630', 'get', 'link-451');">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="L954"></a><tt class="py-lineno"> 954</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="L955"></a><tt class="py-lineno"> 955</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="L956"></a><tt class="py-lineno"> 956</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-631" 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-624', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet href="TEST" type="text/xsl"?&gt;</tt> </tt>
-<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
-<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
-<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
-<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line"> </tt>
-<a name="L943"></a><tt class="py-lineno"> 943</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-609');">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-580');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-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-628" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-628', 'pi', 'link-609');">pi</a></tt><tt class="py-op">.</tt><tt id="link-629" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-631', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet href="TEST" type="text/xsl"?&gt;</tt> </tt>
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line"> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line">        <tt id="link-632" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-632', 'pi', 'link-616');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-633" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-633', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-634" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-634', 'getprevious', 'link-587');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-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-635" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-635', 'pi', 'link-616');">pi</a></tt><tt class="py-op">.</tt><tt id="link-636" 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-629', 'get', 'link-444');">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="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">"text/xsl"</tt><tt class="py-op">,</tt> <tt id="link-630" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-630', 'pi', 'link-609');">pi</a></tt><tt class="py-op">.</tt><tt id="link-631" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-636', 'get', 'link-451');">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="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">"text/xsl"</tt><tt class="py-op">,</tt> <tt id="link-637" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-637', 'pi', 'link-616');">pi</a></tt><tt class="py-op">.</tt><tt id="link-638" 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-631', 'get', 'link-444');">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="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-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-632" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-632', 'pi', 'link-609');">pi</a></tt><tt class="py-op">.</tt><tt id="link-633" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-638', 'get', 'link-451');">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="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-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-639" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-639', 'pi', 'link-616');">pi</a></tt><tt class="py-op">.</tt><tt id="link-640" 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-633', 'get', 'link-444');">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="L947"></a><tt class="py-lineno"> 947</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="L948"></a><tt class="py-lineno"> 948</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="L949"></a><tt class="py-lineno"> 949</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._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-640', 'get', 'link-451');">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="L968"></a><tt class="py-lineno"> 968</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="L969"></a><tt class="py-lineno"> 969</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="L970"></a><tt class="py-lineno"> 970</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-641" 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-634', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl" href="TEST"?&gt;</tt> </tt>
-<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
-<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
-<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
-<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line"> </tt>
-<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">        <tt id="link-635" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-635', 'pi', 'link-609');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-636" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-636', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-637" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-637', 'getprevious', 'link-580');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-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-638" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-638', 'pi', 'link-609');">pi</a></tt><tt class="py-op">.</tt><tt id="link-639" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-641', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl" href="TEST"?&gt;</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line"> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">        <tt id="link-642" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-642', 'pi', 'link-616');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-643" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-643', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-644" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-644', 'getprevious', 'link-587');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-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-645" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-645', 'pi', 'link-616');">pi</a></tt><tt class="py-op">.</tt><tt id="link-646" 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-639', 'get', 'link-444');">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="L959"></a><tt class="py-lineno"> 959</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="L960"></a><tt class="py-lineno"> 960</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="L961"></a><tt class="py-lineno"> 961</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-640" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-646', 'get', 'link-451');">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="L980"></a><tt class="py-lineno"> 980</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="L981"></a><tt class="py-lineno"> 981</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="L982"></a><tt class="py-lineno"> 982</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-647" 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-640', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl" href="TEST"?&gt;</tt> </tt>
-<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
-<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
-<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
-<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line"> </tt>
-<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">        <tt id="link-641" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-641', 'pi', 'link-609');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-642" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-642', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-643" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-643', 'getprevious', 'link-580');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-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-644" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-644', 'pi', 'link-609');">pi</a></tt><tt class="py-op">.</tt><tt id="link-645" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-647', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl" href="TEST"?&gt;</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</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 id="link-648" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-648', 'pi', 'link-616');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-649" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-649', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-650" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-650', 'getprevious', 'link-587');">getprevious</a></tt><tt class="py-op">(</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">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-651" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-651', 'pi', 'link-616');">pi</a></tt><tt class="py-op">.</tt><tt id="link-652" 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-645', 'get', 'link-444');">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="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"> </tt>
-<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line">        <tt id="link-646" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-646', 'pi', 'link-609');">pi</a></tt><tt class="py-op">.</tt><tt id="link-647" 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-647', 'set', 'link-647');">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="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-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-648" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-648', 'pi', 'link-609');">pi</a></tt><tt class="py-op">.</tt><tt id="link-649" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-652', 'get', 'link-451');">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="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line"> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">        <tt id="link-653" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-653', 'pi', 'link-616');">pi</a></tt><tt class="py-op">.</tt><tt id="link-654" 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-654', 'set', 'link-654');">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="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-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-655" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-655', 'pi', 'link-616');">pi</a></tt><tt class="py-op">.</tt><tt id="link-656" 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-649', 'get', 'link-444');">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="L974"></a><tt class="py-lineno"> 974</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="L975"></a><tt class="py-lineno"> 975</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="L976"></a><tt class="py-lineno"> 976</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._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-656', 'get', 'link-451');">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="L995"></a><tt class="py-lineno"> 995</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="L996"></a><tt class="py-lineno"> 996</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="L997"></a><tt class="py-lineno"> 997</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-657" 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-650', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl"?&gt;</tt> </tt>
-<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
-<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
-<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
-<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line"> </tt>
-<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">        <tt id="link-651" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-651', 'pi', 'link-609');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-652" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-652', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-653" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-653', 'getprevious', 'link-580');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-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-654" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-654', 'pi', 'link-609');">pi</a></tt><tt class="py-op">.</tt><tt id="link-655" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-657', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml-stylesheet type="text/xsl"?&gt;</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line"><tt class="py-string">  &lt;b&gt;B&lt;/b&gt;</tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line"><tt class="py-string">  &lt;c&gt;C&lt;/c&gt;</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line"><tt class="py-string">&lt;/a&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line"> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line">        <tt id="link-658" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-658', 'pi', 'link-616');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-659" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-659', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-660" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-660', 'getprevious', 'link-587');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-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-661" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-661', 'pi', 'link-616');">pi</a></tt><tt class="py-op">.</tt><tt id="link-662" 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-655', 'get', 'link-444');">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="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line"> </tt>
-<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line">        <tt id="link-656" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-656', 'pi', 'link-609');">pi</a></tt><tt class="py-op">.</tt><tt id="link-657" class="py-name"><a title="lxml.etree._Element.set
-lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-657', 'set', 'link-647');">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="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-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-658" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-658', 'pi', 'link-609');">pi</a></tt><tt class="py-op">.</tt><tt id="link-659" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-662', 'get', 'link-451');">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="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line"> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">        <tt id="link-663" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-663', 'pi', 'link-616');">pi</a></tt><tt class="py-op">.</tt><tt id="link-664" class="py-name"><a title="lxml.etree._Element.set
+lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-664', 'set', 'link-654');">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="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-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-665" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-665', 'pi', 'link-616');">pi</a></tt><tt class="py-op">.</tt><tt id="link-666" 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-659', 'get', 'link-444');">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="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase"></a><div id="ETreeEXSLTTestCase-def"><a name="L990"></a><tt class="py-lineno"> 990</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="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">    <tt class="py-docstring">"""EXSLT tests"""</tt> </tt>
-<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_str"></a><div id="ETreeEXSLTTestCase.test_exslt_str-def"><a name="L993"></a><tt class="py-lineno"> 993</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="L994"></a><tt class="py-lineno"> 994</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-660" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-666', 'get', 'link-451');">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="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase"></a><div id="ETreeEXSLTTestCase-def"><a name="L1011"></a><tt class="py-lineno">1011</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="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">    <tt class="py-docstring">"""EXSLT tests"""</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_str"></a><div id="ETreeEXSLTTestCase.test_exslt_str-def"><a name="L1014"></a><tt class="py-lineno">1014</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="L1015"></a><tt class="py-lineno">1015</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-667" 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-660', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">        <tt id="link-661" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-661', '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-662" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-667', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">        <tt id="link-668" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-668', '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-669" 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-662', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line"><tt class="py-string">    xmlns:str="http://exslt.org/strings"</tt> </tt>
-<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="str xsl"&gt;</tt> </tt>
-<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="text()"&gt;</tt> </tt>
-<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:value-of select="str:align(string(.), '***', 'center')" /&gt;</tt> </tt>
-<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*"&gt;</tt> </tt>
-<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:copy&gt;</tt> </tt>
-<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:apply-templates/&gt;</tt> </tt>
-<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line"><tt class="py-string">    &lt;/xsl:copy&gt;</tt> </tt>
-<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line"> </tt>
-<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-663" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-663', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-664" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-664', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-665" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-665', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1011"></a><tt class="py-lineno">1011</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="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-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="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;&lt;b&gt;*B*&lt;/b&gt;&lt;c&gt;*C*&lt;/c&gt;&lt;/a&gt;</tt> </tt>
-<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">                          <tt id="link-666" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-666', '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="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line"> </tt>
-<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-667" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-667', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-668" class="py-name"><a title="lxml.etree.LIBXSLT_VERSION" class="py-name" href="#" onclick="return doclink('link-668', 'LIBXSLT_VERSION', 'link-37');">LIBXSLT_VERSION</a></tt> <tt class="py-op">&gt;=</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="L1019"></a><tt class="py-lineno">1019</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="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-669" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-669', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line"><tt class="py-string">    xmlns:str="http://exslt.org/strings"</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="str xsl"&gt;</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="text()"&gt;</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:value-of select="str:align(string(.), '***', 'center')" /&gt;</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*"&gt;</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:copy&gt;</tt> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:apply-templates/&gt;</tt> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line"><tt class="py-string">    &lt;/xsl:copy&gt;</tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line"> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-670" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-670', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-671" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-671', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-672" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-672', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</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="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-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="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line"><tt class="py-string">&lt;a&gt;&lt;b&gt;*B*&lt;/b&gt;&lt;c&gt;*C*&lt;/c&gt;&lt;/a&gt;</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">                          <tt id="link-673" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-673', '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="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_str_attribute_replace"></a><div id="ETreeEXSLTTestCase.test_exslt_str_attribute_replace-def"><a name="L1039"></a><tt class="py-lineno">1039</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="L1040"></a><tt class="py-lineno">1040</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-674" 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-669', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">            <tt id="link-670" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-670', '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-671" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-674', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">        <tt id="link-675" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-675', '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-676" 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-671', '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">      &lt;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:xsl='http://www.w3.org/1999/XSL/Transform'</tt> </tt>
-<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line"><tt class="py-string">          xmlns:str="http://exslt.org/strings"</tt> </tt>
-<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line"><tt class="py-string">          extension-element-prefixes="str"&gt;</tt> </tt>
-<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
-<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"><tt class="py-string">            &lt;h1 class="{str:replace('abc', 'b', 'x')}"&gt;test&lt;/h1&gt;</tt> </tt>
-<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line"><tt class="py-string">          &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
-<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line"><tt class="py-string">      &lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line"> </tt>
-<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">            <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-672" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-672', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-673" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-673', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-674" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-674', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1034"></a><tt class="py-lineno">1034</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="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 class="py-string">'''\</tt> </tt>
-<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line"><tt class="py-string">&lt;h1 class="axc"&gt;test&lt;/h1&gt;</tt> </tt>
-<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">                              <tt id="link-675" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-675', '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="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_math"></a><div id="ETreeEXSLTTestCase.test_exslt_math-def"><a name="L1041"></a><tt class="py-lineno">1041</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="L1042"></a><tt class="py-lineno">1042</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-676" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-676', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:stylesheet version = "1.0"</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line"><tt class="py-string">              xmlns:xsl='http://www.w3.org/1999/XSL/Transform'</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line"><tt class="py-string">              xmlns:str="http://exslt.org/strings"</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line"><tt class="py-string">              extension-element-prefixes="str"&gt;</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line"><tt class="py-string">              &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"><tt class="py-string">                &lt;h1 class="{str:replace('abc', 'b', 'x')}"&gt;test&lt;/h1&gt;</tt> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line"><tt class="py-string">              &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"><tt class="py-string">          &lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">        <tt class="py-name">st</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_elementtree._XMLPullParserTest.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.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-679', 'style', 'link-24');">style</a></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">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="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-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-680" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-680', '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 class="py-string">'''\</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"><tt class="py-string">&lt;h1 class="axc"&gt;test&lt;/h1&gt;</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_math"></a><div id="ETreeEXSLTTestCase.test_exslt_math-def"><a name="L1060"></a><tt class="py-lineno">1060</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="L1061"></a><tt class="py-lineno">1061</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-681" 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-676', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">        <tt id="link-677" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-677', '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-678" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-681', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">        <tt id="link-682" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-682', '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-683" 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-678', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line"><tt class="py-string">    xmlns:math="http://exslt.org/math"</tt> </tt>
-<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="math xsl"&gt;</tt> </tt>
-<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*"&gt;</tt> </tt>
-<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:copy&gt;</tt> </tt>
-<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:attribute name="pi"&gt;</tt> </tt>
-<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"><tt class="py-string">        &lt;xsl:value-of select="math:constant('PI', count(*)+2)"/&gt;</tt> </tt>
-<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"><tt class="py-string">      &lt;/xsl:attribute&gt;</tt> </tt>
-<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:apply-templates/&gt;</tt> </tt>
-<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"><tt class="py-string">    &lt;/xsl:copy&gt;</tt> </tt>
-<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"> </tt>
-<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-679" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-683', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line"><tt class="py-string">    xmlns:math="http://exslt.org/math"</tt> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="math xsl"&gt;</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*"&gt;</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:copy&gt;</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:attribute name="pi"&gt;</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line"><tt class="py-string">        &lt;xsl:value-of select="math:constant('PI', count(*)+2)"/&gt;</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line"><tt class="py-string">      &lt;/xsl:attribute&gt;</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:apply-templates/&gt;</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line"><tt class="py-string">    &lt;/xsl:copy&gt;</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line"> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-684" 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_elementtree._XMLPullParserTest.etree
-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.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-680', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-681" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-681', 'style', 'link-24');">style</a></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">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="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-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="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line"><tt class="py-string">&lt;a pi="3.14"&gt;&lt;b pi="3"&gt;B&lt;/b&gt;&lt;c pi="3"&gt;C&lt;/c&gt;&lt;/a&gt;</tt> </tt>
-<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">                          <tt id="link-682" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-682', '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="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_regexp_test"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_test-def"><a name="L1066"></a><tt class="py-lineno">1066</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="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">        <tt id="link-683" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-683', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-684" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-684', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-685" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-685', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-686" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-686', 'style', 'link-24');">style</a></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">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="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-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="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line"><tt class="py-string">&lt;a pi="3.14"&gt;&lt;b pi="3"&gt;B&lt;/b&gt;&lt;c pi="3"&gt;C&lt;/c&gt;&lt;/a&gt;</tt> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">                          <tt id="link-687" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-687', '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="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_regexp_test"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_test-def"><a name="L1085"></a><tt class="py-lineno">1085</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="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line">        <tt id="link-688" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-688', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-689" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-684', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-685" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-685', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-686" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-689', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-690" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-690', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-691" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-686', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-687" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-691', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-692" 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-687', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-688" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-688', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line"><tt class="py-string">   xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*"&gt;</tt> </tt>
-<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;&lt;xsl:copy-of select="*[regexp:test(string(.), '8.')]"/&gt;&lt;/test&gt;</tt> </tt>
-<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
-<a name="L1075"></a><tt class="py-lineno">1075</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="L1076"></a><tt class="py-lineno">1076</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-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-690" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-692', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-693" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-693', '_bytes', 'link-19');">_bytes</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">&lt;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"&gt;</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*"&gt;</tt> </tt>
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;&lt;xsl:copy-of select="*[regexp:test(string(.), '8.')]"/&gt;&lt;/test&gt;</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</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="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-694" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-694', 'xslt', 'link-237');">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_elementtree._XMLPullParserTest.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_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-691', 'XML', 'link-361');">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">'&lt;a&gt;&lt;b&gt;123&lt;/b&gt;&lt;b&gt;098&lt;/b&gt;&lt;b&gt;987&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1077"></a><tt class="py-lineno">1077</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-365');">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-121');">getroot</a></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">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-365');">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-696', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-697" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-697', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;123&lt;/b&gt;&lt;b&gt;098&lt;/b&gt;&lt;b&gt;987&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line">        <tt id="link-698" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-698', 'root', 'link-368');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-699" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-699', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</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-700" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-700', 'root', 'link-368');">root</a></tt><tt class="py-op">.</tt><tt id="link-701" 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-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">                          <tt class="py-string">'test'</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 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-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="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 id="link-698" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-698', '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-699" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-701', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">                          <tt class="py-string">'test'</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 class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-702" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-702', 'root', 'link-368');">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="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-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-368');">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-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-699', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">                          <tt class="py-string">'b'</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-700" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-700', '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-701" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-704', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line">                          <tt class="py-string">'b'</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 id="link-705" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-705', 'root', 'link-368');">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-706" 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-701', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line">                          <tt class="py-string">'987'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_regexp_replace"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_replace-def"><a name="L1086"></a><tt class="py-lineno">1086</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="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">        <tt id="link-702" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-702', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-703" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-706', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">                          <tt class="py-string">'987'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_regexp_replace"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_replace-def"><a name="L1105"></a><tt class="py-lineno">1105</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="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">        <tt id="link-707" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-707', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-708" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-703', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-704" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-704', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-705" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-708', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-709" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-709', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-710" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-705', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-706" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-710', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-711" 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-706', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line"><tt class="py-string">   xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*"&gt;</tt> </tt>
-<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
-<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:copy-of select="regexp:replace(string(.), 'd.', '',   'XX')"/&gt;</tt> </tt>
-<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:text&gt;-&lt;/xsl:text&gt;</tt> </tt>
-<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:copy-of select="regexp:replace(string(.), 'd.', 'gi', 'XX')"/&gt;</tt> </tt>
-<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
-<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
-<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line"><tt class="py-string">"""</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 class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-707" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-707', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-708" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-711', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line"><tt class="py-string">   xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*"&gt;</tt> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:copy-of select="regexp:replace(string(.), 'd.', '',   'XX')"/&gt;</tt> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:text&gt;-&lt;/xsl:text&gt;</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:copy-of select="regexp:replace(string(.), 'd.', 'gi', 'XX')"/&gt;</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
+<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</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">result</tt> <tt class="py-op">=</tt> <tt id="link-712" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-712', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-713" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-708', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-709" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-713', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-714" 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-709', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-710" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-710', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;abdCdEeDed&lt;/a&gt;'</tt><tt class="py-op">)</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 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-name">result</tt><tt class="py-op">.</tt><tt id="link-712" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-712', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</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 id="link-713" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-713', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-714" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-714', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-715" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-715', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;abdCdEeDed&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">        <tt id="link-716" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-716', 'root', 'link-368');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-717" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-717', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </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-718" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-718', 'root', 'link-368');">root</a></tt><tt class="py-op">.</tt><tt id="link-719" 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-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">                          <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </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-715" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-715', '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="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-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 id="link-717" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-719', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">                          <tt class="py-string">'test'</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 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-368');">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="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-721" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-721', 'root', 'link-368');">root</a></tt><tt class="py-op">.</tt><tt id="link-722" 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-717', '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="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_regexp_match"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_match-def"><a name="L1107"></a><tt class="py-lineno">1107</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="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">        <tt id="link-718" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-718', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-719" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-722', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'abXXdEeDed-abXXXXeXXd'</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_match"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_match-def"><a name="L1126"></a><tt class="py-lineno">1126</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="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">        <tt id="link-723" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-723', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-724" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-719', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-720" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-720', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-721" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-724', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-725" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-725', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-726" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-721', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-722" class="py-name"><a title="lxml.etree.XML
+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.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-722', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line"><tt class="py-string">   xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*"&gt;</tt> </tt>
-<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
-<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line"><tt class="py-string">      &lt;test1&gt;&lt;xsl:copy-of  select="regexp:match(string(.), 'd.')"/&gt;&lt;/test1&gt;</tt> </tt>
-<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line"><tt class="py-string">      &lt;test2&gt;&lt;xsl:copy-of  select="regexp:match(string(.), 'd.', 'g')"/&gt;&lt;/test2&gt;</tt> </tt>
-<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line"><tt class="py-string">      &lt;test2i&gt;&lt;xsl:copy-of select="regexp:match(string(.), 'd.', 'gi')"/&gt;&lt;/test2i&gt;</tt> </tt>
-<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
-<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
-<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-723" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-723', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-724" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-727', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line"><tt class="py-string">   xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*"&gt;</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line"><tt class="py-string">      &lt;test1&gt;&lt;xsl:copy-of  select="regexp:match(string(.), 'd.')"/&gt;&lt;/test1&gt;</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line"><tt class="py-string">      &lt;test2&gt;&lt;xsl:copy-of  select="regexp:match(string(.), 'd.', 'g')"/&gt;&lt;/test2&gt;</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line"><tt class="py-string">      &lt;test2i&gt;&lt;xsl:copy-of select="regexp:match(string(.), 'd.', 'gi')"/&gt;&lt;/test2i&gt;</tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</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">result</tt> <tt class="py-op">=</tt> <tt id="link-728" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-728', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-729" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-724', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-725" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-729', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-730" 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-725', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-726" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-726', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;abdCdEeDed&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">        <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-name">result</tt><tt class="py-op">.</tt><tt id="link-728" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-728', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</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-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 id="link-730" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-730', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-731" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-731', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;abdCdEeDed&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">        <tt id="link-732" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-732', 'root', 'link-368');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-733" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-733', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </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-734" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-734', 'root', 'link-368');">root</a></tt><tt class="py-op">.</tt><tt id="link-735" 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-730', '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="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 class="py-name">len</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-op">,</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line"> </tt>
-<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-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-732" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-732', '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="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-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-733" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-733', '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-734" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-735', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt>  <tt class="py-string">'test'</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 class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-736" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-736', 'root', 'link-368');">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="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line"> </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 class="py-name">len</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-368');">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="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 id="link-738" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-738', 'root', 'link-368');">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-739" 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-734', '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="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-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-735" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-735', '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-736" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-739', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-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-368');">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-741" 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-736', '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="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line"> </tt>
-<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-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-737" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-737', '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="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-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-738" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-738', '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-739" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-741', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dC'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line"> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-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-742" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-742', 'root', 'link-368');">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="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-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-743" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-743', 'root', 'link-368');">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-744" 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-739', '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="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-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-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-741" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-744', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</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 id="link-745" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-745', 'root', 'link-368');">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-746" 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-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dC'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-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-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-743" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-746', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dC'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-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-747" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-747', 'root', 'link-368');">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-748" 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-743', '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="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-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-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-745" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-748', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-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-749" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-749', 'root', 'link-368');">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-750" 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-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dE'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line"> </tt>
-<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-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-746" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-746', '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="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-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-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-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-748" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-750', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dE'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line"> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-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-751" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-751', 'root', 'link-368');">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="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-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-368');">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-753" 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-748', '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="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-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-749" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-749', '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-750" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-753', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</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 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-368');">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-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-750', '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="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-751" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-751', '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-752" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-755', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dC'</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 id="link-756" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-756', 'root', 'link-368');">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-757" 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-752', '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="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 id="link-753" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-753', '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-754" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-757', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-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-758" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-758', 'root', 'link-368');">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-759" 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-754', '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="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-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-755" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-755', '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-756" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-759', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dE'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-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-368');">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-761" 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-756', '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="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-757" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-757', '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-758" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-761', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-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-762" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-762', 'root', 'link-368');">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-763" 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-758', '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="L1143"></a><tt class="py-lineno">1143</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="L1144"></a><tt class="py-lineno">1144</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="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">        <tt id="link-759" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-759', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-760" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-763', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'De'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1162"></a><tt class="py-lineno">1162</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="L1163"></a><tt class="py-lineno">1163</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="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">        <tt id="link-764" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-764', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-765" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-760', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-761" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-761', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-762" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-765', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-766" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-766', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-767" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-762', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-763" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-767', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-768" 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-763', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-764" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-764', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line"><tt class="py-string">   xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
-<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:for-each select="regexp:match(</tt> </tt>
-<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line"><tt class="py-string">            '123abc567', '([0-9]+)([a-z]+)([0-9]+)' )"&gt;</tt> </tt>
-<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line"><tt class="py-string">        &lt;test1&gt;&lt;xsl:value-of select="."/&gt;&lt;/test1&gt;</tt> </tt>
-<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line"><tt class="py-string">      &lt;/xsl:for-each&gt;</tt> </tt>
-<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
-<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
-<a name="L1158"></a><tt class="py-lineno">1158</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="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-765" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-765', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-766" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-766', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-767" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-768', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-769" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-769', '_bytes', 'link-19');">_bytes</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">&lt;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"&gt;</tt> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line"><tt class="py-string">      &lt;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">            '123abc567', '([0-9]+)([a-z]+)([0-9]+)' )"&gt;</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line"><tt class="py-string">        &lt;test1&gt;&lt;xsl:value-of select="."/&gt;&lt;/test1&gt;</tt> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line"><tt class="py-string">      &lt;/xsl:for-each&gt;</tt> </tt>
+<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</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 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-770" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-770', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-771" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-771', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-772" 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-767', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-768" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-768', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">        <tt id="link-769" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-769', '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-770" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-770', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-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-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 id="link-772" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-772', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-773" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-773', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</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-774" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-774', 'root', 'link-368');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-775" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-775', 'getroot', 'link-117');">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-776" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-776', 'root', 'link-368');">root</a></tt><tt class="py-op">.</tt><tt id="link-777" 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-772', '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="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-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-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-op">,</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line"> </tt>
-<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-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-774" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-774', '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-775" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-777', 'tag', 'link-371');">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-778" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-778', 'root', 'link-368');">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="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-779" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-779', 'root', 'link-368');">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-780" 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-775', '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="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-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-776" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-776', '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-777" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-780', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"123abc567"</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-781" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-781', 'root', 'link-368');">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-782" 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-777', '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="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-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">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-779" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-782', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"123"</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-783" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-783', 'root', 'link-368');">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-784" 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-779', '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="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 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">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-781" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-784', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"abc"</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-785" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-785', 'root', 'link-368');">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-786" 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-781', '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="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_regexp_match1"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_match1-def"><a name="L1169"></a><tt class="py-lineno">1169</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="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line">        <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
-<a name="L1171"></a><tt class="py-lineno">1171</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
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-786', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"567"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_regexp_match1"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_match1-def"><a name="L1188"></a><tt class="py-lineno">1188</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="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line">        <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line">        <tt id="link-787" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-787', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-788" 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_elementtree._XMLPullParserTest.etree
-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 id="link-785" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-788', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-789" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-789', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-790" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-785', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-786" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-790', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-791" 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-786', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-787" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-787', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line"><tt class="py-string">   xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
-<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:for-each select="regexp:match(</tt> </tt>
-<a name="L1178"></a><tt class="py-lineno">1178</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="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line"><tt class="py-string">            '(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)')"&gt;</tt> </tt>
-<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"><tt class="py-string">        &lt;test1&gt;&lt;xsl:value-of select="."/&gt;&lt;/test1&gt;</tt> </tt>
-<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line"><tt class="py-string">      &lt;/xsl:for-each&gt;</tt> </tt>
-<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
-<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
-<a name="L1185"></a><tt class="py-lineno">1185</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="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-788" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-788', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-789" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-789', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-790" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-791', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-792" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-792', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line"><tt class="py-string">   xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:for-each select="regexp:match(</tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</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="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line"><tt class="py-string">            '(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)')"&gt;</tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line"><tt class="py-string">        &lt;test1&gt;&lt;xsl:value-of select="."/&gt;&lt;/test1&gt;</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line"><tt class="py-string">      &lt;/xsl:for-each&gt;</tt> </tt>
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L1204"></a><tt class="py-lineno">1204</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="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-793" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-793', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-794" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-794', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-795" 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-790', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-791" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-791', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line">        <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 class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-793" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-793', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-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-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 id="link-795" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-795', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-796" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-796', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</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 id="link-797" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-797', 'root', 'link-368');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-798" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-798', 'getroot', 'link-117');">getroot</a></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 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-368');">root</a></tt><tt class="py-op">.</tt><tt id="link-800" 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-795', '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="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-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-796" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-796', '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="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line"> </tt>
-<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-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="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line">            <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">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-798" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-800', 'tag', 'link-371');">tag</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 class="py-name">len</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-368');">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="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line"> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-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="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line">            <tt id="link-802" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-802', 'root', 'link-368');">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-803" 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-798', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1193"></a><tt class="py-lineno">1193</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="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-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="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">            <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">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-800" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-803', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1212"></a><tt class="py-lineno">1212</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="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>
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">            <tt id="link-804" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-804', 'root', 'link-368');">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-805" 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-800', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">            <tt class="py-string">"http"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-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="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">            <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">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-802" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-805', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">            <tt class="py-string">"http"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-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="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line">            <tt id="link-806" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-806', 'root', 'link-368');">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-807" 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-802', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line">            <tt class="py-string">"www.bayes.co.uk"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-803" 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-803', 'assertFalse', 'link-803');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-804" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-804', '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-805" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-807', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line">            <tt class="py-string">"www.bayes.co.uk"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-808" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-808', 'assertFalse', 'link-146');">assertFalse</a></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-368');">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-810" 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-805', 'text', 'link-372');">text</a></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>
-<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line">            <tt id="link-806" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-806', '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-807" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-810', 'text', 'link-375');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-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="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line">            <tt id="link-811" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-811', 'root', 'link-368');">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-812" 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-807', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1203"></a><tt class="py-lineno">1203</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="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_regexp_match2"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_match2-def"><a name="L1205"></a><tt class="py-lineno">1205</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="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line">        <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
-<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line">        <tt id="link-808" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-808', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-809" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-812', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</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="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_regexp_match2"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_match2-def"><a name="L1224"></a><tt class="py-lineno">1224</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="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line">        <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line">        <tt id="link-813" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-813', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-814" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-809', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-810" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-810', '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-811" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-814', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-815" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-815', '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-816" 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-811', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line"><tt class="py-string">   xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
-<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:for-each select="regexp:match(</tt> </tt>
-<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line"><tt class="py-string">            'This is a test string', '(\w+)', 'g')"&gt;</tt> </tt>
-<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line"><tt class="py-string">        &lt;test1&gt;&lt;xsl:value-of select="."/&gt;&lt;/test1&gt;</tt> </tt>
-<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line"><tt class="py-string">      &lt;/xsl:for-each&gt;</tt> </tt>
-<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
-<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
-<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-812" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-812', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-813" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-813', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-814" class="py-name"><a title="lxml.etree.XML
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-816', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line"><tt class="py-string">   xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:for-each select="regexp:match(</tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line"><tt class="py-string">            'This is a test string', '(\w+)', 'g')"&gt;</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line"><tt class="py-string">        &lt;test1&gt;&lt;xsl:value-of select="."/&gt;&lt;/test1&gt;</tt> </tt>
+<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line"><tt class="py-string">      &lt;/xsl:for-each&gt;</tt> </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
+<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</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">result</tt> <tt class="py-op">=</tt> <tt id="link-817" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-817', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-818" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-818', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-819" 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-814', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-815" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-815', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line">        <tt id="link-816" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-816', '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-817" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-817', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-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-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-819" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-819', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-820" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-820', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line">        <tt id="link-821" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-821', 'root', 'link-368');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-822" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-822', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-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-823" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-823', 'root', 'link-368');">root</a></tt><tt class="py-op">.</tt><tt id="link-824" 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-819', '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="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-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-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-op">,</tt> <tt class="py-number">5</tt><tt class="py-op">)</tt> </tt>
-<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line"> </tt>
-<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-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-821" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-821', '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-822" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-824', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt>  <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-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-825" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-825', 'root', 'link-368');">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="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line"> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-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-368');">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-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-822', '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="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-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-823" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-823', '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-824" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-827', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"This"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-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-828" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-828', 'root', 'link-368');">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-829" 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-824', '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="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-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-825" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-825', '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-826" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-829', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"is"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-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-830" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-830', 'root', 'link-368');">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-831" 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-826', '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="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-827" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-827', '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-828" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-831', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"a"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-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-368');">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-833" 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-828', '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="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 id="link-829" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-829', '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-830" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-833', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"test"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-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-834" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-834', 'root', 'link-368');">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-835" 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-830', '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="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase._test_exslt_regexp_match3"></a><div id="ETreeEXSLTTestCase._test_exslt_regexp_match3-def"><a name="L1232"></a><tt class="py-lineno">1232</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="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line">        <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
-<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line">        <tt class="py-comment"># THIS IS NOT SUPPORTED!</tt> </tt>
-<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line">        <tt id="link-831" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-831', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-832" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-835', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"string"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase._test_exslt_regexp_match3"></a><div id="ETreeEXSLTTestCase._test_exslt_regexp_match3-def"><a name="L1251"></a><tt class="py-lineno">1251</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="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line">        <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line">        <tt class="py-comment"># THIS IS NOT SUPPORTED!</tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line">        <tt id="link-836" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-836', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-837" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-832', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-833" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-833', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-834" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-837', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-838" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-838', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-839" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-834', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-835" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-839', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-840" 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-835', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-836" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-836', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line"><tt class="py-string">   xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
-<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:for-each select="regexp:match(</tt> </tt>
-<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line"><tt class="py-string">            'This is a test string', '([a-z])+ ', 'g')"&gt;</tt> </tt>
-<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line"><tt class="py-string">        &lt;test1&gt;&lt;xsl:value-of select="."/&gt;&lt;/test1&gt;</tt> </tt>
-<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line"><tt class="py-string">      &lt;/xsl:for-each&gt;</tt> </tt>
-<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
-<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
-<a name="L1248"></a><tt class="py-lineno">1248</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="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-837" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-837', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-838" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-838', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-839" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-840', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-841" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-841', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line"><tt class="py-string">   xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
+<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:for-each select="regexp:match(</tt> </tt>
+<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line"><tt class="py-string">            'This is a test string', '([a-z])+ ', 'g')"&gt;</tt> </tt>
+<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line"><tt class="py-string">        &lt;test1&gt;&lt;xsl:value-of select="."/&gt;&lt;/test1&gt;</tt> </tt>
+<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line"><tt class="py-string">      &lt;/xsl:for-each&gt;</tt> </tt>
+<a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
+<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</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="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-842" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-842', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-843" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-843', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-844" 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-839', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-840" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-840', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line">        <tt id="link-841" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-841', '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-842" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-842', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-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 id="link-844" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-844', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-845" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-845', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line">        <tt id="link-846" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-846', 'root', 'link-368');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-847" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-847', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-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-848" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-848', 'root', 'link-368');">root</a></tt><tt class="py-op">.</tt><tt id="link-849" 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-844', '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="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-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-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-op">,</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line"> </tt>
-<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-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-846" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-846', '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-847" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-849', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt>  <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-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-850" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-850', 'root', 'link-368');">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="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line"> </tt>
+<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-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-851" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-851', 'root', 'link-368');">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-852" 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-847', '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="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-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-848" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-848', '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-849" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-852', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"his"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-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-853" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-853', 'root', 'link-368');">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-854" 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-849', '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="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-850" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-850', '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-851" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-854', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"is"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-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-855" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-855', 'root', 'link-368');">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-856" 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-851', '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="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 id="link-852" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-852', '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-853" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-856', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"a"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-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-857" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-857', 'root', 'link-368');">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-858" 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-853', '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="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase._test_exslt_regexp_match4"></a><div id="ETreeEXSLTTestCase._test_exslt_regexp_match4-def"><a name="L1259"></a><tt class="py-lineno">1259</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="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line">        <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
-<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line">        <tt class="py-comment"># THIS IS NOT SUPPORTED!</tt> </tt>
-<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line">        <tt id="link-854" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-854', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-855" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-858', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"test"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase._test_exslt_regexp_match4"></a><div id="ETreeEXSLTTestCase._test_exslt_regexp_match4-def"><a name="L1278"></a><tt class="py-lineno">1278</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="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line">        <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
+<a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line">        <tt class="py-comment"># THIS IS NOT SUPPORTED!</tt> </tt>
+<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line">        <tt id="link-859" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-859', 'xslt', 'link-237');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-860" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-855', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-856" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-856', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-857" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-860', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-861" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-861', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-862" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-857', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-858" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-862', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-863" 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-858', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-859" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-859', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line"><tt class="py-string">   xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
-<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:for-each select="regexp:match(</tt> </tt>
-<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line"><tt class="py-string">            'This is a test string', '([a-z])+ ', 'gi')"&gt;</tt> </tt>
-<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line"><tt class="py-string">        &lt;test1&gt;&lt;xsl:value-of select="."/&gt;&lt;/test1&gt;</tt> </tt>
-<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line"><tt class="py-string">      &lt;/xsl:for-each&gt;</tt> </tt>
-<a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
-<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
-<a name="L1275"></a><tt class="py-lineno">1275</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="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-860" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-860', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-861" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-861', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-862" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-863', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-864" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-864', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line"><tt class="py-string">   xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
+<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line"><tt class="py-string">   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line"><tt class="py-string">    &lt;test&gt;</tt> </tt>
+<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line"><tt class="py-string">      &lt;xsl:for-each select="regexp:match(</tt> </tt>
+<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line"><tt class="py-string">            'This is a test string', '([a-z])+ ', 'gi')"&gt;</tt> </tt>
+<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line"><tt class="py-string">        &lt;test1&gt;&lt;xsl:value-of select="."/&gt;&lt;/test1&gt;</tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line"><tt class="py-string">      &lt;/xsl:for-each&gt;</tt> </tt>
+<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line"><tt class="py-string">    &lt;/test&gt;</tt> </tt>
+<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L1294"></a><tt class="py-lineno">1294</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="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-865" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-865', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-866" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-866', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-867" 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-862', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-863" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-863', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line">        <tt id="link-864" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-864', '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-865" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-865', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-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-866" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-866', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-867" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-867', 'XML', 'link-364');">XML</a></tt><tt class="py-op">(</tt><tt id="link-868" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-868', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</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 id="link-869" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-869', 'root', 'link-368');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-870" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-870', 'getroot', 'link-117');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-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-871" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-871', 'root', 'link-368');">root</a></tt><tt class="py-op">.</tt><tt id="link-872" 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-867', '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="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-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-868" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-868', '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="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">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-869" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-869', '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-870" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-872', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt>  <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-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-873" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-873', 'root', 'link-368');">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="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-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.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-874', 'root', 'link-368');">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-875" 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-870', '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="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 id="link-871" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-871', '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-872" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-875', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"This"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-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-876" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-876', 'root', 'link-368');">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-877" 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-872', '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="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-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-873" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-873', '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-874" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-877', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"is"</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 id="link-878" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-878', 'root', 'link-368');">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-879" 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-874', '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="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-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-875" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-875', '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-876" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-879', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"a"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-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.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-880', 'root', 'link-368');">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-881" 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-876', '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="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line"> </tt>
-<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtFuncTestCase"></a><div id="ETreeXSLTExtFuncTestCase-def"><a name="L1287"></a><tt class="py-lineno">1287</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="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line">    <tt class="py-docstring">"""Tests for XPath extension functions in XSLT."""</tt> </tt>
-<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtFuncTestCase.test_extensions1"></a><div id="ETreeXSLTExtFuncTestCase.test_extensions1-def"><a name="L1290"></a><tt class="py-lineno">1290</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="L1291"></a><tt class="py-lineno">1291</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-877" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-881', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"test"</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line"> </tt>
+<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtFuncTestCase"></a><div id="ETreeXSLTExtFuncTestCase-def"><a name="L1306"></a><tt class="py-lineno">1306</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="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line">    <tt class="py-docstring">"""Tests for XPath extension functions in XSLT."""</tt> </tt>
+<a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtFuncTestCase.test_extensions1"></a><div id="ETreeXSLTExtFuncTestCase.test_extensions1-def"><a name="L1309"></a><tt class="py-lineno">1309</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="L1310"></a><tt class="py-lineno">1310</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-882" 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-877', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line">        <tt id="link-878" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-878', '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-879" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-882', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line">        <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 class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-884" 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-879', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="myns"&gt;</tt> </tt>
-<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;&lt;A&gt;&lt;xsl:value-of select="myns:mytext(b)"/&gt;&lt;/A&gt;&lt;/xsl:template&gt;</tt> </tt>
-<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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">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-880" 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-884', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="myns"&gt;</tt> </tt>
+<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;&lt;A&gt;&lt;xsl:value-of select="myns:mytext(b)"/&gt;&lt;/A&gt;&lt;/xsl:template&gt;</tt> </tt>
+<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line"> </tt>
+<a name="L1319"></a><tt class="py-lineno">1319</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="L1320"></a><tt class="py-lineno">1320</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-885" 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-880', 'values', 'link-880');">values</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line"> </tt>
-<a name="L1303"></a><tt class="py-lineno">1303</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-881" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-881', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-882" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-882', '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="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 class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-883" 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-883', '_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="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line">                          <tt id="link-884" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-884', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;X&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtFuncTestCase.test_extensions2"></a><div id="ETreeXSLTExtFuncTestCase.test_extensions2-def"><a name="L1307"></a><tt class="py-lineno">1307</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="L1308"></a><tt class="py-lineno">1308</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-885" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-885', 'values', 'link-885');">values</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line"> </tt>
+<a name="L1322"></a><tt class="py-lineno">1322</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-886" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-886', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><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-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="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">assertEqual</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.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-888', '_rootstring', 'link-330');">_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="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line">                          <tt id="link-889" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-889', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;X&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtFuncTestCase.test_extensions2"></a><div id="ETreeXSLTExtFuncTestCase.test_extensions2-def"><a name="L1326"></a><tt class="py-lineno">1326</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="L1327"></a><tt class="py-lineno">1327</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-890" 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-885', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line">        <tt id="link-886" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-886', '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-887" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-890', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">        <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 class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-892" 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-887', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="myns"&gt;</tt> </tt>
-<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;&lt;A&gt;&lt;xsl:value-of select="myns:mytext(b)"/&gt;&lt;/A&gt;&lt;/xsl:template&gt;</tt> </tt>
-<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line"> </tt>
-<a name="L1317"></a><tt class="py-lineno">1317</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="L1318"></a><tt class="py-lineno">1318</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-888" class="py-name"><a title="lxml.etree._Attrib.values
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-892', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="myns"&gt;</tt> </tt>
+<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;&lt;A&gt;&lt;xsl:value-of select="myns:mytext(b)"/&gt;&lt;/A&gt;&lt;/xsl:template&gt;</tt> </tt>
+<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<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 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="L1337"></a><tt class="py-lineno">1337</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-893" 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-888', 'values', 'link-880');">values</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line"> </tt>
-<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line">        <tt id="link-889" class="py-name" targets="Variable lxml.etree.QName.namespace=lxml.etree.QName-class.html#namespace,Function lxml.tests.selftest.namespace()=lxml.tests.selftest-module.html#namespace"><a title="lxml.etree.QName.namespace
-lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-889', 'namespace', 'link-889');">namespace</a></tt> <tt class="py-op">=</tt> <tt id="link-890" class="py-name"><a title="lxml.etree
+lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-893', 'values', 'link-885');">values</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line"> </tt>
+<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line">        <tt id="link-894" class="py-name" targets="Variable lxml.etree.QName.namespace=lxml.etree.QName-class.html#namespace,Function lxml.tests.selftest.namespace()=lxml.tests.selftest-module.html#namespace"><a title="lxml.etree.QName.namespace
+lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-894', 'namespace', 'link-894');">namespace</a></tt> <tt class="py-op">=</tt> <tt id="link-895" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-890', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-891" 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-891', 'FunctionNamespace', 'link-891');">FunctionNamespace</a></tt><tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line">        <tt id="link-892" class="py-name"><a title="lxml.etree.QName.namespace
-lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-892', 'namespace', 'link-889');">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="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line"> </tt>
-<a name="L1323"></a><tt class="py-lineno">1323</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-893" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-893', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-894" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-894', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-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-895" 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-895', '_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="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line">                          <tt id="link-896" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-896', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;X&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1326"></a><tt class="py-lineno">1326</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="L1327"></a><tt class="py-lineno">1327</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="L1328"></a><tt class="py-lineno">1328</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-897" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-895', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-896" 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-896', 'FunctionNamespace', 'link-896');">FunctionNamespace</a></tt><tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line">        <tt id="link-897" class="py-name"><a title="lxml.etree.QName.namespace
+lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-897', 'namespace', 'link-894');">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="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line"> </tt>
+<a name="L1342"></a><tt class="py-lineno">1342</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-898" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-898', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><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>
+<a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-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-900" 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-900', '_rootstring', 'link-330');">_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="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line">                          <tt id="link-901" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-901', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;X&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1345"></a><tt class="py-lineno">1345</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="L1346"></a><tt class="py-lineno">1346</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="L1347"></a><tt class="py-lineno">1347</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-902" 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-897', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line">        <tt id="link-898" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-898', '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-899" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-902', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line">        <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">self</tt><tt class="py-op">.</tt><tt id="link-904" 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-899', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="myns"&gt;</tt> </tt>
-<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
-<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:variable name="content"&gt;</tt> </tt>
-<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line"><tt class="py-string">       &lt;xsl:apply-templates/&gt;</tt> </tt>
-<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line"><tt class="py-string">    &lt;/xsl:variable&gt;</tt> </tt>
-<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;xsl:value-of select="myns:mytext($content)"/&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="b"&gt;&lt;xsl:copy&gt;BBB&lt;/xsl:copy&gt;&lt;/xsl:template&gt;</tt> </tt>
-<a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line"> </tt>
-<a name="L1343"></a><tt class="py-lineno">1343</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="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-900" 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-904', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="myns"&gt;</tt> </tt>
+<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
+<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:variable name="content"&gt;</tt> </tt>
+<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line"><tt class="py-string">       &lt;xsl:apply-templates/&gt;</tt> </tt>
+<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line"><tt class="py-string">    &lt;/xsl:variable&gt;</tt> </tt>
+<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;xsl:value-of select="myns:mytext($content)"/&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="b"&gt;&lt;xsl:copy&gt;BBB&lt;/xsl:copy&gt;&lt;/xsl:template&gt;</tt> </tt>
+<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line"> </tt>
+<a name="L1362"></a><tt class="py-lineno">1362</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="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-905" 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-900', 'value', 'link-900');">value</a></tt> <tt class="py-keyword">in</tt> <tt id="link-901" class="py-name"><a title="lxml.etree._Attrib.values
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-905', 'value', 'link-905');">value</a></tt> <tt class="py-keyword">in</tt> <tt id="link-906" 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-901', 'values', 'link-880');">values</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L1345"></a><tt class="py-lineno">1345</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-902" 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-902', 'hasattr', 'link-902');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-903" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-906', 'values', 'link-885');">values</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1364"></a><tt class="py-lineno">1364</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-907" 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-907', 'hasattr', 'link-907');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-908" 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-903', 'value', 'link-900');">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="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line">                             <tt class="py-string">"%s is not an Element"</tt> <tt class="py-op">%</tt> <tt id="link-904" class="py-name"><a title="lxml.etree._LogEntry.type
-lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-904', 'type', 'link-550');">type</a></tt><tt class="py-op">(</tt><tt id="link-905" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-908', 'value', 'link-905');">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="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line">                             <tt class="py-string">"%s is not an Element"</tt> <tt class="py-op">%</tt> <tt id="link-909" class="py-name"><a title="lxml.etree._LogEntry.type
+lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-909', 'type', 'link-557');">type</a></tt><tt class="py-op">(</tt><tt id="link-910" 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-905', 'value', 'link-900');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-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-906" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-910', 'value', 'link-905');">value</a></tt><tt class="py-op">)</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-911" 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-906', 'value', 'link-900');">value</a></tt><tt class="py-op">.</tt><tt id="link-907" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-911', 'value', 'link-905');">value</a></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-907', '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="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-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-908" class="py-name"><a title="lxml.html.CheckboxGroup.value
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-912', 'tag', 'link-371');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-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-913" 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-908', 'value', 'link-900');">value</a></tt><tt class="py-op">.</tt><tt id="link-909" class="py-name"><a title="lxml.etree.QName.text
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-913', 'value', 'link-905');">value</a></tt><tt class="py-op">.</tt><tt id="link-914" 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-909', '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="L1349"></a><tt class="py-lineno">1349</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-910" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-914', 'text', 'link-375');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'BBB'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1368"></a><tt class="py-lineno">1368</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-915" 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-910', '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-911" class="py-name"><a title="lxml.etree._Attrib.values
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-915', 'tag', 'link-371');">tag</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-916" 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-911', 'values', 'link-880');">values</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line"> </tt>
-<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line">        <tt id="link-912" class="py-name"><a title="lxml.etree.QName.namespace
-lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-912', 'namespace', 'link-889');">namespace</a></tt> <tt class="py-op">=</tt> <tt id="link-913" class="py-name"><a title="lxml.etree
+lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-916', 'values', 'link-885');">values</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line"> </tt>
+<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line">        <tt id="link-917" class="py-name"><a title="lxml.etree.QName.namespace
+lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-917', 'namespace', 'link-894');">namespace</a></tt> <tt class="py-op">=</tt> <tt id="link-918" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-913', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-914" class="py-name"><a title="lxml.etree.FunctionNamespace" class="py-name" href="#" onclick="return doclink('link-914', 'FunctionNamespace', 'link-891');">FunctionNamespace</a></tt><tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line">        <tt id="link-915" class="py-name"><a title="lxml.etree.QName.namespace
-lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-915', 'namespace', 'link-889');">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="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line"> </tt>
-<a name="L1354"></a><tt class="py-lineno">1354</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-916" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-916', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><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>
-<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-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-918" 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-918', '_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="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line">                         <tt id="link-919" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-919', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;bXb&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtFuncTestCase.test_xpath_on_context_node"></a><div id="ETreeXSLTExtFuncTestCase.test_xpath_on_context_node-def"><a name="L1358"></a><tt class="py-lineno">1358</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtFuncTestCase.test_xpath_on_context_node-toggle" onclick="return toggle('ETreeXSLTExtFuncTestCase.test_xpath_on_context_node');">-</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_xpath_on_context_node">test_xpath_on_context_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="ETreeXSLTExtFuncTestCase.test_xpath_on_context_node-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtFuncTestCase.test_xpath_on_context_node-expanded"><a name="L1359"></a><tt class="py-lineno">1359</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-920" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-918', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-919" class="py-name"><a title="lxml.etree.FunctionNamespace" class="py-name" href="#" onclick="return doclink('link-919', 'FunctionNamespace', 'link-896');">FunctionNamespace</a></tt><tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line">        <tt id="link-920" class="py-name"><a title="lxml.etree.QName.namespace
+lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-920', 'namespace', 'link-894');">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="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line"> </tt>
+<a name="L1373"></a><tt class="py-lineno">1373</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-921" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-921', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-922" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-922', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-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-923" 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-923', '_rootstring', 'link-330');">_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="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line">                         <tt id="link-924" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-924', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;bXb&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtFuncTestCase.test_xpath_on_context_node"></a><div id="ETreeXSLTExtFuncTestCase.test_xpath_on_context_node-def"><a name="L1377"></a><tt class="py-lineno">1377</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtFuncTestCase.test_xpath_on_context_node-toggle" onclick="return toggle('ETreeXSLTExtFuncTestCase.test_xpath_on_context_node');">-</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_xpath_on_context_node">test_xpath_on_context_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="ETreeXSLTExtFuncTestCase.test_xpath_on_context_node-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtFuncTestCase.test_xpath_on_context_node-expanded"><a name="L1378"></a><tt class="py-lineno">1378</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-925" 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">'&lt;a&gt;&lt;b&gt;B&lt;c/&gt;C&lt;/b&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line">        <tt id="link-921" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-921', '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-922" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-925', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;c/&gt;C&lt;/b&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line">        <tt id="link-926" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-926', '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-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-922', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="myns"&gt;</tt> </tt>
-<a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="b"&gt;</tt> </tt>
-<a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;xsl:value-of select="myns:myext()"/&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line"> </tt>
-<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">extfunc</tt><tt class="py-op">(</tt><tt class="py-param">ctxt</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line">            <tt id="link-923" class="py-name" targets="Method lxml.html.HtmlMixin.text_content()=lxml.html.HtmlMixin-class.html#text_content"><a title="lxml.html.HtmlMixin.text_content" class="py-name" href="#" onclick="return doclink('link-923', 'text_content', 'link-923');">text_content</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctxt</tt><tt class="py-op">.</tt><tt class="py-name">context_node</tt><tt class="py-op">.</tt><tt id="link-924" class="py-name" targets="Method lxml.etree._Element.xpath()=lxml.etree._Element-class.html#xpath,Method lxml.etree._ElementTree.xpath()=lxml.etree._ElementTree-class.html#xpath,Function lxml.tests.test_xpathevaluator.xpath()=lxml.tests.test_xpathevaluator-module.html#xpath"><a title="lxml.etree._Element.xpath
+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">'''\</tt> </tt>
+<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="myns"&gt;</tt> </tt>
+<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="b"&gt;</tt> </tt>
+<a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;xsl:value-of select="myns:myext()"/&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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">def</tt> <tt class="py-def-name">extfunc</tt><tt class="py-op">(</tt><tt class="py-param">ctxt</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 id="link-928" class="py-name" targets="Method lxml.html.HtmlMixin.text_content()=lxml.html.HtmlMixin-class.html#text_content"><a title="lxml.html.HtmlMixin.text_content" class="py-name" href="#" onclick="return doclink('link-928', 'text_content', 'link-928');">text_content</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctxt</tt><tt class="py-op">.</tt><tt class="py-name">context_node</tt><tt class="py-op">.</tt><tt id="link-929" class="py-name" targets="Method lxml.etree._Element.xpath()=lxml.etree._Element-class.html#xpath,Method lxml.etree._ElementTree.xpath()=lxml.etree._ElementTree-class.html#xpath,Function lxml.tests.test_xpathevaluator.xpath()=lxml.tests.test_xpathevaluator-module.html#xpath"><a title="lxml.etree._Element.xpath
 lxml.etree._ElementTree.xpath
-lxml.tests.test_xpathevaluator.xpath" class="py-name" href="#" onclick="return doclink('link-924', 'xpath', 'link-924');">xpath</a></tt><tt class="py-op">(</tt><tt class="py-string">'text()'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1372"></a><tt class="py-lineno">1372</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 id="link-925" class="py-name"><a title="lxml.html.HtmlMixin.text_content" class="py-name" href="#" onclick="return doclink('link-925', 'text_content', 'link-923');">text_content</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line"> </tt>
-<a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line">        <tt id="link-926" class="py-name"><a title="lxml.etree.QName.namespace
-lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-926', 'namespace', 'link-889');">namespace</a></tt> <tt class="py-op">=</tt> <tt id="link-927" class="py-name"><a title="lxml.etree
+lxml.tests.test_xpathevaluator.xpath" class="py-name" href="#" onclick="return doclink('link-929', 'xpath', 'link-929');">xpath</a></tt><tt class="py-op">(</tt><tt class="py-string">'text()'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1391"></a><tt class="py-lineno">1391</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 id="link-930" class="py-name"><a title="lxml.html.HtmlMixin.text_content" class="py-name" href="#" onclick="return doclink('link-930', 'text_content', 'link-928');">text_content</a></tt><tt class="py-op">)</tt> </tt>
+</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 id="link-931" class="py-name"><a title="lxml.etree.QName.namespace
+lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-931', 'namespace', 'link-894');">namespace</a></tt> <tt class="py-op">=</tt> <tt id="link-932" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-927', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-928" class="py-name"><a title="lxml.etree.FunctionNamespace" class="py-name" href="#" onclick="return doclink('link-928', 'FunctionNamespace', 'link-891');">FunctionNamespace</a></tt><tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line">        <tt id="link-929" class="py-name"><a title="lxml.etree.QName.namespace
-lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-929', 'namespace', 'link-889');">namespace</a></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">extfunc</tt> </tt>
-<a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line"> </tt>
-<a name="L1377"></a><tt class="py-lineno">1377</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-930" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-930', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-931" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-931', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-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-932" 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-932', '_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="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line">                         <tt id="link-933" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-933', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;BxC&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtFuncTestCase.test_xpath_on_foreign_context_node"></a><div id="ETreeXSLTExtFuncTestCase.test_xpath_on_foreign_context_node-def"><a name="L1381"></a><tt class="py-lineno">1381</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtFuncTestCase.test_xpath_on_foreign_context_node-toggle" onclick="return toggle('ETreeXSLTExtFuncTestCase.test_xpath_on_foreign_context_node');">-</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_xpath_on_foreign_context_node">test_xpath_on_foreign_context_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="ETreeXSLTExtFuncTestCase.test_xpath_on_foreign_context_node-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtFuncTestCase.test_xpath_on_foreign_context_node-expanded"><a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line">        <tt class="py-comment"># LP ticket 1354652</tt> </tt>
-<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Resolver</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="L1384"></a><tt class="py-lineno">1384</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">system_url</tt><tt class="py-op">,</tt> <tt class="py-param">public_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="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt> <tt id="link-934" class="py-name" targets="Variable lxml.etree.DTD.system_url=lxml.etree.DTD-class.html#system_url,Variable lxml.etree.DocInfo.system_url=lxml.etree.DocInfo-class.html#system_url"><a title="lxml.etree.DTD.system_url
-lxml.etree.DocInfo.system_url" class="py-name" href="#" onclick="return doclink('link-934', 'system_url', 'link-934');">system_url</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'extdoc.xml'</tt> </tt>
-<a name="L1386"></a><tt class="py-lineno">1386</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-935" class="py-name"><a title="lxml.etree.Resolver.resolve_string" class="py-name" href="#" onclick="return doclink('link-935', 'resolve_string', 'link-415');">resolve_string</a></tt><tt class="py-op">(</tt><tt class="py-string">b'&lt;a&gt;&lt;b&gt;B&lt;c/&gt;C&lt;/b&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line"> </tt>
-<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line">        <tt id="link-936" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-936', 'parser', 'link-416');">parser</a></tt> <tt class="py-op">=</tt> <tt id="link-937" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-932', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-933" class="py-name"><a title="lxml.etree.FunctionNamespace" class="py-name" href="#" onclick="return doclink('link-933', 'FunctionNamespace', 'link-896');">FunctionNamespace</a></tt><tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line">        <tt id="link-934" class="py-name"><a title="lxml.etree.QName.namespace
+lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-934', 'namespace', 'link-894');">namespace</a></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">extfunc</tt> </tt>
+<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line"> </tt>
+<a name="L1396"></a><tt class="py-lineno">1396</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-935" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-935', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><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>
+<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-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-937" 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-937', '_rootstring', 'link-330');">_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="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line">                         <tt id="link-938" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-938', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;BxC&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtFuncTestCase.test_xpath_on_foreign_context_node"></a><div id="ETreeXSLTExtFuncTestCase.test_xpath_on_foreign_context_node-def"><a name="L1400"></a><tt class="py-lineno">1400</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtFuncTestCase.test_xpath_on_foreign_context_node-toggle" onclick="return toggle('ETreeXSLTExtFuncTestCase.test_xpath_on_foreign_context_node');">-</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_xpath_on_foreign_context_node">test_xpath_on_foreign_context_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="ETreeXSLTExtFuncTestCase.test_xpath_on_foreign_context_node-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtFuncTestCase.test_xpath_on_foreign_context_node-expanded"><a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line">        <tt class="py-comment"># LP ticket 1354652</tt> </tt>
+<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Resolver</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="L1403"></a><tt class="py-lineno">1403</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">system_url</tt><tt class="py-op">,</tt> <tt class="py-param">public_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="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt> <tt id="link-939" class="py-name" targets="Variable lxml.etree.DTD.system_url=lxml.etree.DTD-class.html#system_url,Variable lxml.etree.DocInfo.system_url=lxml.etree.DocInfo-class.html#system_url"><a title="lxml.etree.DTD.system_url
+lxml.etree.DocInfo.system_url" class="py-name" href="#" onclick="return doclink('link-939', 'system_url', 'link-939');">system_url</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'extdoc.xml'</tt> </tt>
+<a name="L1405"></a><tt class="py-lineno">1405</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-940" class="py-name"><a title="lxml.etree.Resolver.resolve_string" class="py-name" href="#" onclick="return doclink('link-940', 'resolve_string', 'link-422');">resolve_string</a></tt><tt class="py-op">(</tt><tt class="py-string">b'&lt;a&gt;&lt;b&gt;B&lt;c/&gt;C&lt;/b&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line"> </tt>
+<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line">        <tt id="link-941" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-941', 'parser', 'link-423');">parser</a></tt> <tt class="py-op">=</tt> <tt id="link-942" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-937', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-938" class="py-name"><a title="lxml.etree.XMLParser
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-942', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-943" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-938', 'XMLParser', 'link-418');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line">        <tt id="link-939" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-939', 'parser', 'link-416');">parser</a></tt><tt class="py-op">.</tt><tt id="link-940" class="py-name"><a title="lxml.etree.iterparse.resolvers" class="py-name" href="#" onclick="return doclink('link-940', 'resolvers', 'link-420');">resolvers</a></tt><tt class="py-op">.</tt><tt id="link-941" class="py-name"><a title="lxml.html.CheckboxValues.add
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-943', 'XMLParser', 'link-425');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line">        <tt id="link-944" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-944', 'parser', 'link-423');">parser</a></tt><tt class="py-op">.</tt><tt id="link-945" class="py-name"><a title="lxml.etree.iterparse.resolvers" class="py-name" href="#" onclick="return doclink('link-945', 'resolvers', 'link-427');">resolvers</a></tt><tt class="py-op">.</tt><tt id="link-946" class="py-name"><a title="lxml.html.CheckboxValues.add
 lxml.html.Classes.add
-lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-941', 'add', 'link-421');">add</a></tt><tt class="py-op">(</tt><tt id="link-942" class="py-name" targets="Class lxml.etree.Resolver=lxml.etree.Resolver-class.html"><a title="lxml.etree.Resolver" class="py-name" href="#" onclick="return doclink('link-942', 'Resolver', 'link-942');">Resolver</a></tt><tt class="py-op">(</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>
-<a name="L1391"></a><tt class="py-lineno">1391</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.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-946', 'add', 'link-428');">add</a></tt><tt class="py-op">(</tt><tt id="link-947" class="py-name" targets="Class lxml.etree.Resolver=lxml.etree.Resolver-class.html"><a title="lxml.etree.Resolver" class="py-name" href="#" onclick="return doclink('link-947', 'Resolver', 'link-947');">Resolver</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-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-943', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">b'&lt;a&gt;&lt;b/&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line">        <tt class="py-name">transform</tt> <tt class="py-op">=</tt> <tt id="link-944" class="py-name"><a title="lxml.etree
+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">b'&lt;a&gt;&lt;b/&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line">        <tt class="py-name">transform</tt> <tt class="py-op">=</tt> <tt id="link-949" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-944', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-945" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-945', '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-946" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-949', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-950" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-950', '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-951" 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-946', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">b'''\</tt> </tt>
-<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line"><tt class="py-string">    xmlns:mypre="testns"</tt> </tt>
-<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="mypre"&gt;</tt> </tt>
-<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="b"&gt;</tt> </tt>
-<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line"><tt class="py-string">    &lt;B&gt;&lt;xsl:value-of select="mypre:myext()"/&gt;&lt;/B&gt;</tt> </tt>
-<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
-<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;xsl:apply-templates select="document('extdoc.xml')//b" /&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">,</tt> <tt id="link-947" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-947', 'parser', 'link-416');">parser</a></tt><tt class="py-op">=</tt><tt id="link-948" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-948', 'parser', 'link-416');">parser</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line"> </tt>
-<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">extfunc</tt><tt class="py-op">(</tt><tt class="py-param">ctxt</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line">            <tt id="link-949" class="py-name"><a title="lxml.html.HtmlMixin.text_content" class="py-name" href="#" onclick="return doclink('link-949', 'text_content', 'link-923');">text_content</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctxt</tt><tt class="py-op">.</tt><tt class="py-name">context_node</tt><tt class="py-op">.</tt><tt id="link-950" class="py-name"><a title="lxml.etree._Element.xpath
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-951', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">b'''\</tt> </tt>
+<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line"><tt class="py-string">    xmlns:mypre="testns"</tt> </tt>
+<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="mypre"&gt;</tt> </tt>
+<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="b"&gt;</tt> </tt>
+<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line"><tt class="py-string">    &lt;B&gt;&lt;xsl:value-of select="mypre:myext()"/&gt;&lt;/B&gt;</tt> </tt>
+<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
+<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;xsl:apply-templates select="document('extdoc.xml')//b" /&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">,</tt> <tt id="link-952" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-952', 'parser', 'link-423');">parser</a></tt><tt class="py-op">=</tt><tt id="link-953" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-953', 'parser', 'link-423');">parser</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line"> </tt>
+<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">extfunc</tt><tt class="py-op">(</tt><tt class="py-param">ctxt</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line">            <tt id="link-954" class="py-name"><a title="lxml.html.HtmlMixin.text_content" class="py-name" href="#" onclick="return doclink('link-954', 'text_content', 'link-928');">text_content</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctxt</tt><tt class="py-op">.</tt><tt class="py-name">context_node</tt><tt class="py-op">.</tt><tt id="link-955" class="py-name"><a title="lxml.etree._Element.xpath
 lxml.etree._ElementTree.xpath
-lxml.tests.test_xpathevaluator.xpath" class="py-name" href="#" onclick="return doclink('link-950', 'xpath', 'link-924');">xpath</a></tt><tt class="py-op">(</tt><tt class="py-string">'text()'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1407"></a><tt class="py-lineno">1407</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 id="link-951" class="py-name"><a title="lxml.html.HtmlMixin.text_content" class="py-name" href="#" onclick="return doclink('link-951', 'text_content', 'link-923');">text_content</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line"> </tt>
-<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line">        <tt id="link-952" class="py-name"><a title="lxml.etree.QName.namespace
-lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-952', 'namespace', 'link-889');">namespace</a></tt> <tt class="py-op">=</tt> <tt id="link-953" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-953', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-954" class="py-name"><a title="lxml.etree.FunctionNamespace" class="py-name" href="#" onclick="return doclink('link-954', 'FunctionNamespace', 'link-891');">FunctionNamespace</a></tt><tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line">        <tt id="link-955" class="py-name"><a title="lxml.etree.QName.namespace
-lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-955', 'namespace', 'link-889');">namespace</a></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">extfunc</tt> </tt>
-<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line"> </tt>
-<a name="L1412"></a><tt class="py-lineno">1412</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">tree</tt><tt class="py-op">)</tt> </tt>
-<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-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-956" 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-956', '_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="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line">                         <tt id="link-957" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-957', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;&lt;B&gt;BxC&lt;/B&gt;&lt;B/&gt;&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div></div><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>
-<a name="ETreeXSLTExtElementTestCase"></a><div id="ETreeXSLTExtElementTestCase-def"><a name="L1417"></a><tt class="py-lineno">1417</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="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line">    <tt class="py-docstring">"""Tests for extension elements in XSLT."""</tt> </tt>
-<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element-def"><a name="L1420"></a><tt class="py-lineno">1420</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="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-958" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_xpathevaluator.xpath" class="py-name" href="#" onclick="return doclink('link-955', 'xpath', 'link-929');">xpath</a></tt><tt class="py-op">(</tt><tt class="py-string">'text()'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1426"></a><tt class="py-lineno">1426</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 id="link-956" class="py-name"><a title="lxml.html.HtmlMixin.text_content" class="py-name" href="#" onclick="return doclink('link-956', 'text_content', 'link-928');">text_content</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line"> </tt>
+<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line">        <tt id="link-957" class="py-name"><a title="lxml.etree.QName.namespace
+lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-957', 'namespace', 'link-894');">namespace</a></tt> <tt class="py-op">=</tt> <tt id="link-958" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-958', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-959" class="py-name"><a title="lxml.etree.FunctionNamespace" class="py-name" href="#" onclick="return doclink('link-959', 'FunctionNamespace', 'link-896');">FunctionNamespace</a></tt><tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line">        <tt id="link-960" class="py-name"><a title="lxml.etree.QName.namespace
+lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-960', 'namespace', 'link-894');">namespace</a></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">extfunc</tt> </tt>
+<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line"> </tt>
+<a name="L1431"></a><tt class="py-lineno">1431</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">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-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-961" 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-961', '_rootstring', 'link-330');">_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="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line">                         <tt id="link-962" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-962', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;&lt;B&gt;BxC&lt;/B&gt;&lt;B/&gt;&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line"> </tt>
+<a name="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase"></a><div id="ETreeXSLTExtElementTestCase-def"><a name="L1436"></a><tt class="py-lineno">1436</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="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line">    <tt class="py-docstring">"""Tests for extension elements in XSLT."""</tt> </tt>
+<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element-def"><a name="L1439"></a><tt class="py-lineno">1439</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="L1440"></a><tt class="py-lineno">1440</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-963" 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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line">        <tt id="link-959" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-959', '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-960" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-963', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line">        <tt id="link-964" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-964', '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-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-960', '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">&lt;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"&gt;</tt> </tt>
-<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
-<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;b&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line"> </tt>
-<a name="L1433"></a><tt class="py-lineno">1433</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="L1434"></a><tt class="py-lineno">1434</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="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line">                <tt class="py-name">child</tt> <tt class="py-op">=</tt> <tt id="link-961" class="py-name"><a title="lxml.etree
+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">'''\</tt> </tt>
+<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"</tt> </tt>
+<a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="myns"&gt;</tt> </tt>
+<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
+<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;b&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line"> </tt>
+<a name="L1452"></a><tt class="py-lineno">1452</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="L1453"></a><tt class="py-lineno">1453</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="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line">                <tt class="py-name">child</tt> <tt class="py-op">=</tt> <tt id="link-966" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-961', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-962" 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-966', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-967" 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-962', 'Element', 'link-962');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">self_node</tt><tt class="py-op">.</tt><tt id="link-963" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-967', 'Element', 'link-967');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">self_node</tt><tt class="py-op">.</tt><tt id="link-968" 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-963', 'text', 'link-372');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line">                <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-964" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-968', 'text', 'link-375');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line">                <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-969" 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-964', 'text', 'link-372');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X'</tt> </tt>
-<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line">                <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-965" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-965', 'append', 'link-597');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line"> </tt>
-<a name="L1439"></a><tt class="py-lineno">1439</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="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line"> </tt>
-<a name="L1441"></a><tt class="py-lineno">1441</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-966" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-966', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-967" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-967', '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="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-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-968" 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-968', '_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="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line">                          <tt id="link-969" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-969', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;&lt;b&gt;X&lt;/b&gt;&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1444"></a><tt class="py-lineno">1444</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="L1445"></a><tt class="py-lineno">1445</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="L1446"></a><tt class="py-lineno">1446</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-970" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-969', 'text', 'link-375');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X'</tt> </tt>
+<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line">                <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-970" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-970', 'append', 'link-604');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line"> </tt>
+<a name="L1458"></a><tt class="py-lineno">1458</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="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line"> </tt>
+<a name="L1460"></a><tt class="py-lineno">1460</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-971" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-971', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-972" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-972', '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="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-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-973" 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-973', '_rootstring', 'link-330');">_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="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line">                          <tt id="link-974" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-974', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;&lt;b&gt;X&lt;/b&gt;&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1463"></a><tt class="py-lineno">1463</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="L1464"></a><tt class="py-lineno">1464</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="L1465"></a><tt class="py-lineno">1465</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-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-970', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line">        <tt id="link-971" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-971', '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-972" class="py-name"><a title="lxml.etree._ElementTree.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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line">        <tt id="link-976" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-976', '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-977" 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-972', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"</tt> </tt>
-<a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="myns"&gt;</tt> </tt>
-<a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;b&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line"> </tt>
-<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line">        <tt id="link-973" 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-973', 'tags', 'link-973');">tags</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line"> </tt>
-<a name="L1460"></a><tt class="py-lineno">1460</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="L1461"></a><tt class="py-lineno">1461</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="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line">                <tt id="link-974" class="py-name"><a title="lxml.html.defs.tags" class="py-name" href="#" onclick="return doclink('link-974', 'tags', 'link-973');">tags</a></tt><tt class="py-op">.</tt><tt id="link-975" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-975', 'append', 'link-597');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">input_node</tt><tt class="py-op">.</tt><tt id="link-976" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-977', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"</tt> </tt>
+<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="myns"&gt;</tt> </tt>
+<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;b&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1474"></a><tt class="py-lineno">1474</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line"> </tt>
+<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line">        <tt id="link-978" 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-978', 'tags', 'link-978');">tags</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-line"> </tt>
+<a name="L1479"></a><tt class="py-lineno">1479</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="L1480"></a><tt class="py-lineno">1480</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="L1481"></a><tt class="py-lineno">1481</tt>  <tt class="py-line">                <tt id="link-979" class="py-name"><a title="lxml.html.defs.tags" class="py-name" href="#" onclick="return doclink('link-979', 'tags', 'link-978');">tags</a></tt><tt class="py-op">.</tt><tt id="link-980" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-980', 'append', 'link-604');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">input_node</tt><tt class="py-op">.</tt><tt id="link-981" 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-976', 'tag', 'link-368');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line"> </tt>
-<a name="L1464"></a><tt class="py-lineno">1464</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="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line"> </tt>
-<a name="L1466"></a><tt class="py-lineno">1466</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-977" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-977', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-978" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-978', '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="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-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-979" class="py-name"><a title="lxml.html.defs.tags" class="py-name" href="#" onclick="return doclink('link-979', 'tags', 'link-973');">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="L1468"></a><tt class="py-lineno">1468</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="L1469"></a><tt class="py-lineno">1469</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="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-980" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-981', 'tag', 'link-371');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div></div><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-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="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line"> </tt>
+<a name="L1485"></a><tt class="py-lineno">1485</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-982" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-982', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-983" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-983', '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="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-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-984" class="py-name"><a title="lxml.html.defs.tags" class="py-name" href="#" onclick="return doclink('link-984', 'tags', 'link-978');">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="L1487"></a><tt class="py-lineno">1487</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="L1488"></a><tt class="py-lineno">1488</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="L1489"></a><tt class="py-lineno">1489</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-985" 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-980', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?test toast?&gt;&lt;a&gt;&lt;!--a comment--&gt;&lt;?another pi?&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line">        <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">self</tt><tt class="py-op">.</tt><tt id="link-982" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-985', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?test toast?&gt;&lt;a&gt;&lt;!--a comment--&gt;&lt;?another pi?&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-line">        <tt id="link-986" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-986', '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-987" 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-982', '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">&lt;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">    exclude-result-prefixes="myns"&gt;</tt> </tt>
-<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-line"><tt class="py-string">    &lt;ROOT&gt;&lt;xsl:apply-templates /&gt;&lt;/ROOT&gt;</tt> </tt>
-<a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="comment()"&gt;</tt> </tt>
-<a name="L1481"></a><tt class="py-lineno">1481</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;b&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1483"></a><tt class="py-lineno">1483</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="processing-instruction()"&gt;</tt> </tt>
-<a name="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;b&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1485"></a><tt class="py-lineno">1485</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line"> </tt>
-<a name="L1488"></a><tt class="py-lineno">1488</tt>  <tt class="py-line">        <tt id="link-983" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-987', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"</tt> </tt>
+<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="myns"&gt;</tt> </tt>
+<a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line"><tt class="py-string">    &lt;ROOT&gt;&lt;xsl:apply-templates /&gt;&lt;/ROOT&gt;</tt> </tt>
+<a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="comment()"&gt;</tt> </tt>
+<a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;b&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="processing-instruction()"&gt;</tt> </tt>
+<a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;b&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1504"></a><tt class="py-lineno">1504</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line"> </tt>
+<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line">        <tt id="link-988" 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-983', 'text', 'link-372');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line"> </tt>
-<a name="L1490"></a><tt class="py-lineno">1490</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="L1491"></a><tt class="py-lineno">1491</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="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line">                <tt id="link-984" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-988', 'text', 'link-375');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line"> </tt>
+<a name="L1509"></a><tt class="py-lineno">1509</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="L1510"></a><tt class="py-lineno">1510</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="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line">                <tt id="link-989" 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-984', 'text', 'link-372');">text</a></tt><tt class="py-op">.</tt><tt id="link-985" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-985', 'append', 'link-597');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">input_node</tt><tt class="py-op">.</tt><tt id="link-986" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-989', 'text', 'link-375');">text</a></tt><tt class="py-op">.</tt><tt id="link-990" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-990', 'append', 'link-604');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">input_node</tt><tt class="py-op">.</tt><tt id="link-991" 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-986', 'text', 'link-372');">text</a></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-987" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-987', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-988" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-988', '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 id="link-989" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-991', 'text', 'link-375');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-line"> </tt>
+<a name="L1513"></a><tt class="py-lineno">1513</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="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line"> </tt>
+<a name="L1515"></a><tt class="py-lineno">1515</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-992" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-992', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><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">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-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-994" 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-989', '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="L1498"></a><tt class="py-lineno">1498</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="L1499"></a><tt class="py-lineno">1499</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="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line">        <tt class="py-comment"># currently not supported</tt> </tt>
-<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-990" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-994', 'text', 'link-375');">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="L1517"></a><tt class="py-lineno">1517</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="L1518"></a><tt class="py-lineno">1518</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="L1519"></a><tt class="py-lineno">1519</tt>  <tt class="py-line">        <tt class="py-comment"># currently not supported</tt> </tt>
+<a name="L1520"></a><tt class="py-lineno">1520</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-995" 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">'&lt;a test="A"&gt;&lt;b attr="B"/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1502"></a><tt class="py-lineno">1502</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-995', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a test="A"&gt;&lt;b attr="B"/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line">        <tt id="link-996" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-996', '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-997" 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="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line"><tt class="py-string">&lt;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">    exclude-result-prefixes="myns"&gt;</tt> </tt>
-<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="@test"&gt;</tt> </tt>
-<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;b&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="@attr"&gt;</tt> </tt>
-<a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;b&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line"> </tt>
-<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-line">        <tt id="link-993" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-997', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1522"></a><tt class="py-lineno">1522</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"</tt> </tt>
+<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="myns"&gt;</tt> </tt>
+<a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="@test"&gt;</tt> </tt>
+<a name="L1528"></a><tt class="py-lineno">1528</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;b&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="@attr"&gt;</tt> </tt>
+<a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;b&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line"> </tt>
+<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line">        <tt id="link-998" 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-993', 'text', 'link-372');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L1517"></a><tt class="py-lineno">1517</tt>  <tt class="py-line"> </tt>
-<a name="L1518"></a><tt class="py-lineno">1518</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="L1519"></a><tt class="py-lineno">1519</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="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line">                <tt id="link-994" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-998', 'text', 'link-375');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line"> </tt>
+<a name="L1537"></a><tt class="py-lineno">1537</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="L1538"></a><tt class="py-lineno">1538</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="L1539"></a><tt class="py-lineno">1539</tt>  <tt class="py-line">                <tt id="link-999" 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-994', 'text', 'link-372');">text</a></tt><tt class="py-op">.</tt><tt id="link-995" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-995', 'append', 'link-597');">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="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line"> </tt>
-<a name="L1522"></a><tt class="py-lineno">1522</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="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">result</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>
-<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-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-998" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-999', 'text', 'link-375');">text</a></tt><tt class="py-op">.</tt><tt id="link-1000" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1000', 'append', 'link-604');">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="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line"> </tt>
+<a name="L1541"></a><tt class="py-lineno">1541</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="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line"> </tt>
+<a name="L1543"></a><tt class="py-lineno">1543</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-1001" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1001', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1002" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1002', '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="L1544"></a><tt class="py-lineno">1544</tt>  <tt class="py-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-1003" 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-998', '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="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element_content"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_content-def"><a name="L1527"></a><tt class="py-lineno">1527</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="L1528"></a><tt class="py-lineno">1528</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-999" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1003', 'text', 'link-375');">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="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element_content"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_content-def"><a name="L1546"></a><tt class="py-lineno">1546</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="L1547"></a><tt class="py-lineno">1547</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-1004" 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-999', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-line">        <tt id="link-1000" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1000', '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-1001" class="py-name"><a title="lxml.etree._ElementTree.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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1548"></a><tt class="py-lineno">1548</tt>  <tt class="py-line">        <tt id="link-1005" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1005', '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-1006" 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-1001', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
-<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
-<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;&lt;x&gt;X&lt;/x&gt;&lt;y&gt;Y&lt;/y&gt;&lt;z/&gt;&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1538"></a><tt class="py-lineno">1538</tt>  <tt class="py-line"> </tt>
-<a name="L1539"></a><tt class="py-lineno">1539</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="L1540"></a><tt class="py-lineno">1540</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="L1541"></a><tt class="py-lineno">1541</tt>  <tt class="py-line">                <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1002" 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-1002', 'extend', 'link-1002');">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="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line"> </tt>
-<a name="L1543"></a><tt class="py-lineno">1543</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="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">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1003" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1003', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1004" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1004', '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="L1546"></a><tt class="py-lineno">1546</tt>  <tt class="py-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-1005" 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-1005', '_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="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-line">                          <tt id="link-1006" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1006', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;&lt;y&gt;Y&lt;/y&gt;&lt;z/&gt;&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1548"></a><tt class="py-lineno">1548</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="L1549"></a><tt class="py-lineno">1549</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="L1550"></a><tt class="py-lineno">1550</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-1007" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1006', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1549"></a><tt class="py-lineno">1549</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1551"></a><tt class="py-lineno">1551</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
+<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
+<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;&lt;x&gt;X&lt;/x&gt;&lt;y&gt;Y&lt;/y&gt;&lt;z/&gt;&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1556"></a><tt class="py-lineno">1556</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line"> </tt>
+<a name="L1558"></a><tt class="py-lineno">1558</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="L1559"></a><tt class="py-lineno">1559</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="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-line">                <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1007" 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-1007', 'extend', 'link-1007');">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="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line"> </tt>
+<a name="L1562"></a><tt class="py-lineno">1562</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="L1563"></a><tt class="py-lineno">1563</tt>  <tt class="py-line"> </tt>
+<a name="L1564"></a><tt class="py-lineno">1564</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-1008" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1008', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1009" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1009', '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="L1565"></a><tt class="py-lineno">1565</tt>  <tt class="py-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-1010" 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-1010', '_rootstring', 'link-330');">_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="L1566"></a><tt class="py-lineno">1566</tt>  <tt class="py-line">                          <tt id="link-1011" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1011', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;&lt;y&gt;Y&lt;/y&gt;&lt;z/&gt;&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1567"></a><tt class="py-lineno">1567</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="L1568"></a><tt class="py-lineno">1568</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="L1569"></a><tt class="py-lineno">1569</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-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-1007', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1551"></a><tt class="py-lineno">1551</tt>  <tt class="py-line">        <tt id="link-1008" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1008', '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-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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line">        <tt id="link-1013" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1013', '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-1014" 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">'''\</tt> </tt>
-<a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
-<a name="L1556"></a><tt class="py-lineno">1556</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
-<a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;&lt;x&gt;X&lt;/x&gt;&lt;y&gt;Y&lt;/y&gt;&lt;z/&gt;&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1558"></a><tt class="py-lineno">1558</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1559"></a><tt class="py-lineno">1559</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="x" /&gt;</tt> </tt>
-<a name="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="z"&gt;XYZ&lt;/xsl:template&gt;</tt> </tt>
-<a name="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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-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="L1564"></a><tt class="py-lineno">1564</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="L1565"></a><tt class="py-lineno">1565</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="L1566"></a><tt class="py-lineno">1566</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-1010" 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-1010', 'apply_templates', 'link-1010');">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="L1567"></a><tt class="py-lineno">1567</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-1011" class="py-name"><a title="lxml.html.clean.basestring" class="py-name" href="#" onclick="return doclink('link-1011', 'basestring', 'link-11');">basestring</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1568"></a><tt class="py-lineno">1568</tt>  <tt class="py-line">                            <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1012" 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_elementtree._XMLPullParserTest.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.Element
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1014', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1571"></a><tt class="py-lineno">1571</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1572"></a><tt class="py-lineno">1572</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
+<a name="L1575"></a><tt class="py-lineno">1575</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
+<a name="L1576"></a><tt class="py-lineno">1576</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;&lt;x&gt;X&lt;/x&gt;&lt;y&gt;Y&lt;/y&gt;&lt;z/&gt;&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="x" /&gt;</tt> </tt>
+<a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="z"&gt;XYZ&lt;/xsl:template&gt;</tt> </tt>
+<a name="L1580"></a><tt class="py-lineno">1580</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<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-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="L1583"></a><tt class="py-lineno">1583</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="L1584"></a><tt class="py-lineno">1584</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="L1585"></a><tt class="py-lineno">1585</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-1015" 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-1015', 'apply_templates', 'link-1015');">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="L1586"></a><tt class="py-lineno">1586</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-1016" class="py-name"><a title="lxml.html.clean.basestring" class="py-name" href="#" onclick="return doclink('link-1016', 'basestring', 'link-11');">basestring</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-line">                            <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1017" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1017', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1018" 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-1013', 'Element', 'link-962');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"T"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line">                            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1014" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1018', 'Element', 'link-967');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"T"</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">el</tt><tt class="py-op">.</tt><tt id="link-1019" 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-1014', 'text', 'link-372');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt> </tt>
-<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line">                        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1571"></a><tt class="py-lineno">1571</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="L1572"></a><tt class="py-lineno">1572</tt>  <tt class="py-line">                        <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1015" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1015', 'append', 'link-597');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line"> </tt>
-<a name="L1574"></a><tt class="py-lineno">1574</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="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-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1016" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1016', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><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">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
-<a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-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-1018" 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-1018', '_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="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line">                          <tt id="link-1019" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1019', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;&lt;T&gt;Y&lt;/T&gt;&lt;T&gt;XYZ&lt;/T&gt;&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_elements_only"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_elements_only-def"><a name="L1580"></a><tt class="py-lineno">1580</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_elements_only-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_elements_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_apply_templates_elements_only">test_extension_element_apply_templates_elements_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_apply_templates_elements_only-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_elements_only-expanded"><a name="L1581"></a><tt class="py-lineno">1581</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-1020" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1019', 'text', 'link-375');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt> </tt>
+<a name="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-line">                        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1590"></a><tt class="py-lineno">1590</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="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-line">                        <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1020" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1020', 'append', 'link-604');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-line"> </tt>
+<a name="L1593"></a><tt class="py-lineno">1593</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="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-line"> </tt>
+<a name="L1595"></a><tt class="py-lineno">1595</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-1021" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1021', 'xslt', 'link-237');">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 class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+<a name="L1596"></a><tt class="py-lineno">1596</tt>  <tt class="py-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-1023" 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-1023', '_rootstring', 'link-330');">_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="L1597"></a><tt class="py-lineno">1597</tt>  <tt class="py-line">                          <tt id="link-1024" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1024', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;&lt;T&gt;Y&lt;/T&gt;&lt;T&gt;XYZ&lt;/T&gt;&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_elements_only"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_elements_only-def"><a name="L1599"></a><tt class="py-lineno">1599</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_elements_only-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_elements_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_apply_templates_elements_only">test_extension_element_apply_templates_elements_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_apply_templates_elements_only-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_elements_only-expanded"><a name="L1600"></a><tt class="py-lineno">1600</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-1025" 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-1020', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1582"></a><tt class="py-lineno">1582</tt>  <tt class="py-line">        <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 class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1022" class="py-name"><a title="lxml.etree._ElementTree.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">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1601"></a><tt class="py-lineno">1601</tt>  <tt class="py-line">        <tt id="link-1026" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1026', '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-1027" 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-1022', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1583"></a><tt class="py-lineno">1583</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1584"></a><tt class="py-lineno">1584</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1585"></a><tt class="py-lineno">1585</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1586"></a><tt class="py-lineno">1586</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
-<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
-<a name="L1588"></a><tt class="py-lineno">1588</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;&lt;x&gt;X&lt;/x&gt;&lt;y&gt;Y&lt;/y&gt;&lt;z/&gt;&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1590"></a><tt class="py-lineno">1590</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="x"&gt;&lt;X/&gt;&lt;/xsl:template&gt;</tt> </tt>
-<a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="z"&gt;XYZ&lt;/xsl:template&gt;</tt> </tt>
-<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1593"></a><tt class="py-lineno">1593</tt>  <tt class="py-line"> </tt>
-<a name="L1594"></a><tt class="py-lineno">1594</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="L1595"></a><tt class="py-lineno">1595</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="L1596"></a><tt class="py-lineno">1596</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="L1597"></a><tt class="py-lineno">1597</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-1023" class="py-name"><a title="lxml.etree.XSLTExtension.apply_templates" class="py-name" href="#" onclick="return doclink('link-1023', 'apply_templates', 'link-1010');">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>
-<a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-line">                                                       <tt class="py-name">elements_only</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-line">                        <tt class="py-keyword">assert</tt> <tt class="py-keyword">not</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-1024" class="py-name"><a title="lxml.html.clean.basestring" class="py-name" href="#" onclick="return doclink('link-1024', 'basestring', 'link-11');">basestring</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1600"></a><tt class="py-lineno">1600</tt>  <tt class="py-line">                        <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1025" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1025', 'append', 'link-597');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
-</div></div><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-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="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line"> </tt>
-<a name="L1604"></a><tt class="py-lineno">1604</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-1026" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1026', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1027" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1027', '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="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-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-1028" 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-1028', '_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="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line">                          <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">'&lt;A&gt;&lt;X/&gt;&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_remove_blank_text"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_remove_blank_text-def"><a name="L1608"></a><tt class="py-lineno">1608</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_remove_blank_text-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_remove_blank_text');">-</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_remove_blank_text">test_extension_element_apply_templates_remove_blank_text</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_remove_blank_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_remove_blank_text-expanded"><a name="L1609"></a><tt class="py-lineno">1609</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-1030" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1027', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1602"></a><tt class="py-lineno">1602</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
+<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
+<a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;&lt;x&gt;X&lt;/x&gt;&lt;y&gt;Y&lt;/y&gt;&lt;z/&gt;&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1609"></a><tt class="py-lineno">1609</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="x"&gt;&lt;X/&gt;&lt;/xsl:template&gt;</tt> </tt>
+<a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="z"&gt;XYZ&lt;/xsl:template&gt;</tt> </tt>
+<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line"> </tt>
+<a name="L1613"></a><tt class="py-lineno">1613</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="L1614"></a><tt class="py-lineno">1614</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="L1615"></a><tt class="py-lineno">1615</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="L1616"></a><tt class="py-lineno">1616</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-1028" class="py-name"><a title="lxml.etree.XSLTExtension.apply_templates" class="py-name" href="#" onclick="return doclink('link-1028', 'apply_templates', 'link-1015');">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>
+<a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line">                                                       <tt class="py-name">elements_only</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line">                        <tt class="py-keyword">assert</tt> <tt class="py-keyword">not</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-1029" class="py-name"><a title="lxml.html.clean.basestring" class="py-name" href="#" onclick="return doclink('link-1029', 'basestring', 'link-11');">basestring</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line">                        <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1030" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1030', 'append', 'link-604');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line"> </tt>
+<a name="L1621"></a><tt class="py-lineno">1621</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="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line"> </tt>
+<a name="L1623"></a><tt class="py-lineno">1623</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-1031" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1031', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><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">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-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-1033" 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-1033', '_rootstring', 'link-330');">_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="L1625"></a><tt class="py-lineno">1625</tt>  <tt class="py-line">                          <tt id="link-1034" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1034', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;&lt;X/&gt;&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_remove_blank_text"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_remove_blank_text-def"><a name="L1627"></a><tt class="py-lineno">1627</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_remove_blank_text-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_remove_blank_text');">-</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_remove_blank_text">test_extension_element_apply_templates_remove_blank_text</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_remove_blank_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_remove_blank_text-expanded"><a name="L1628"></a><tt class="py-lineno">1628</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-1035" 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-1030', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line">        <tt id="link-1031" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1031', '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-1032" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1035', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-line">        <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 class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1037" 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-1032', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1613"></a><tt class="py-lineno">1613</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1614"></a><tt class="py-lineno">1614</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
-<a name="L1615"></a><tt class="py-lineno">1615</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
-<a name="L1616"></a><tt class="py-lineno">1616</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;&lt;x&gt;X&lt;/x&gt;&lt;y&gt;Y&lt;/y&gt;&lt;z/&gt;&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="x"&gt;&lt;X/&gt;&lt;/xsl:template&gt;</tt> </tt>
-<a name="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="y"&gt;&lt;xsl:text&gt;   &lt;/xsl:text&gt;&lt;/xsl:template&gt;</tt> </tt>
-<a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="z"&gt;XYZ&lt;/xsl:template&gt;</tt> </tt>
-<a name="L1621"></a><tt class="py-lineno">1621</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line"> </tt>
-<a name="L1623"></a><tt class="py-lineno">1623</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="L1624"></a><tt class="py-lineno">1624</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="L1625"></a><tt class="py-lineno">1625</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="L1626"></a><tt class="py-lineno">1626</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-1033" class="py-name"><a title="lxml.etree.XSLTExtension.apply_templates" class="py-name" href="#" onclick="return doclink('link-1033', 'apply_templates', 'link-1010');">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>
-<a name="L1627"></a><tt class="py-lineno">1627</tt>  <tt class="py-line">                                                       <tt class="py-name">remove_blank_text</tt><tt class="py-op">=</tt><tt class="py-name">True</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-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-1034" class="py-name"><a title="lxml.html.clean.basestring" class="py-name" href="#" onclick="return doclink('link-1034', 'basestring', 'link-11');">basestring</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-line">                            <tt class="py-keyword">assert</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-1035" class="py-name"><a title="lxml.doctestcompare.strip" class="py-name" href="#" onclick="return doclink('link-1035', 'strip', 'link-221');">strip</a></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">el</tt> <tt class="py-op">=</tt> <tt id="link-1036" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1036', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1037" class="py-name"><a title="lxml.etree.Element
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1037', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1630"></a><tt class="py-lineno">1630</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1631"></a><tt class="py-lineno">1631</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1633"></a><tt class="py-lineno">1633</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
+<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
+<a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;&lt;x&gt;X&lt;/x&gt;&lt;y&gt;Y&lt;/y&gt;&lt;z/&gt;&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1636"></a><tt class="py-lineno">1636</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="x"&gt;&lt;X/&gt;&lt;/xsl:template&gt;</tt> </tt>
+<a name="L1638"></a><tt class="py-lineno">1638</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="y"&gt;&lt;xsl:text&gt;   &lt;/xsl:text&gt;&lt;/xsl:template&gt;</tt> </tt>
+<a name="L1639"></a><tt class="py-lineno">1639</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="z"&gt;XYZ&lt;/xsl:template&gt;</tt> </tt>
+<a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1641"></a><tt class="py-lineno">1641</tt>  <tt class="py-line"> </tt>
+<a name="L1642"></a><tt class="py-lineno">1642</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="L1643"></a><tt class="py-lineno">1643</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="L1644"></a><tt class="py-lineno">1644</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="L1645"></a><tt class="py-lineno">1645</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-1038" class="py-name"><a title="lxml.etree.XSLTExtension.apply_templates" class="py-name" href="#" onclick="return doclink('link-1038', 'apply_templates', 'link-1015');">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>
+<a name="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-line">                                                       <tt class="py-name">remove_blank_text</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1647"></a><tt class="py-lineno">1647</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-1039" class="py-name"><a title="lxml.html.clean.basestring" class="py-name" href="#" onclick="return doclink('link-1039', 'basestring', 'link-11');">basestring</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line">                            <tt class="py-keyword">assert</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-1040" class="py-name"><a title="lxml.doctestcompare.strip" class="py-name" href="#" onclick="return doclink('link-1040', 'strip', 'link-224');">strip</a></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">el</tt> <tt class="py-op">=</tt> <tt id="link-1041" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1041', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1042" 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-1037', 'Element', 'link-962');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"T"</tt><tt class="py-op">)</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-1038" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1042', 'Element', 'link-967');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"T"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-line">                            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1043" 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-1038', 'text', 'link-372');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt> </tt>
-<a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line">                        <tt class="py-keyword">else</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">el</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt> </tt>
-<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-line">                        <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1039" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1039', 'append', 'link-597');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line"> </tt>
-<a name="L1636"></a><tt class="py-lineno">1636</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="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line"> </tt>
-<a name="L1638"></a><tt class="py-lineno">1638</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-1040" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1040', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1041" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1041', '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="L1639"></a><tt class="py-lineno">1639</tt>  <tt class="py-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-1042" 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-1042', '_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="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line">                          <tt id="link-1043" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1043', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;&lt;X/&gt;&lt;T&gt;XYZ&lt;/T&gt;&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1641"></a><tt class="py-lineno">1641</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="L1642"></a><tt class="py-lineno">1642</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="L1643"></a><tt class="py-lineno">1643</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-1044" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1043', 'text', 'link-375');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt> </tt>
+<a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line">                        <tt class="py-keyword">else</tt><tt class="py-op">:</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 class="py-name">result</tt> </tt>
+<a name="L1653"></a><tt class="py-lineno">1653</tt>  <tt class="py-line">                        <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1044" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1044', 'append', 'link-604');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1654"></a><tt class="py-lineno">1654</tt>  <tt class="py-line"> </tt>
+<a name="L1655"></a><tt class="py-lineno">1655</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="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-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1045" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1045', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1046" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1046', '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="L1658"></a><tt class="py-lineno">1658</tt>  <tt class="py-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-1047" 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-1047', '_rootstring', 'link-330');">_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="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line">                          <tt id="link-1048" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1048', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;&lt;X/&gt;&lt;T&gt;XYZ&lt;/T&gt;&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1660"></a><tt class="py-lineno">1660</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="L1661"></a><tt class="py-lineno">1661</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="L1662"></a><tt class="py-lineno">1662</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-1049" 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-1044', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1644"></a><tt class="py-lineno">1644</tt>  <tt class="py-line">        <tt id="link-1045" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1045', '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-1046" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1049', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1663"></a><tt class="py-lineno">1663</tt>  <tt class="py-line">        <tt id="link-1050" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1050', '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-1051" 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-1046', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1647"></a><tt class="py-lineno">1647</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
-<a name="L1649"></a><tt class="py-lineno">1649</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
-<a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;&lt;x&gt;X&lt;/x&gt;&lt;y&gt;Y&lt;/y&gt;&lt;z/&gt;&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1652"></a><tt class="py-lineno">1652</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="x" /&gt;</tt> </tt>
-<a name="L1653"></a><tt class="py-lineno">1653</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="z"&gt;XYZ&lt;/xsl:template&gt;</tt> </tt>
-<a name="L1654"></a><tt class="py-lineno">1654</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<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-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="L1657"></a><tt class="py-lineno">1657</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="L1658"></a><tt class="py-lineno">1658</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="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1047" class="py-name"><a title="lxml.etree.XSLTExtension.apply_templates" class="py-name" href="#" onclick="return doclink('link-1047', 'apply_templates', 'link-1010');">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="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>
-<a name="L1663"></a><tt class="py-lineno">1663</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-1048" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1048', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1049" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1049', '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="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-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-1050" 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-1050', '_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="L1665"></a><tt class="py-lineno">1665</tt>  <tt class="py-line">                          <tt id="link-1051" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1051', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;YXYZ&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1666"></a><tt class="py-lineno">1666</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="L1667"></a><tt class="py-lineno">1667</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="L1668"></a><tt class="py-lineno">1668</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-1052" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1051', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1665"></a><tt class="py-lineno">1665</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1667"></a><tt class="py-lineno">1667</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
+<a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
+<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;&lt;x&gt;X&lt;/x&gt;&lt;y&gt;Y&lt;/y&gt;&lt;z/&gt;&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="x" /&gt;</tt> </tt>
+<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="z"&gt;XYZ&lt;/xsl:template&gt;</tt> </tt>
+<a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</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">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="L1676"></a><tt class="py-lineno">1676</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="L1677"></a><tt class="py-lineno">1677</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="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1052" class="py-name"><a title="lxml.etree.XSLTExtension.apply_templates" class="py-name" href="#" onclick="return doclink('link-1052', 'apply_templates', 'link-1015');">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="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line"> </tt>
+<a name="L1680"></a><tt class="py-lineno">1680</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="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">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1053" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1053', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1054" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1054', '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="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 class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1055" 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-1055', '_rootstring', 'link-330');">_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="L1684"></a><tt class="py-lineno">1684</tt>  <tt class="py-line">                          <tt id="link-1056" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1056', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;YXYZ&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1685"></a><tt class="py-lineno">1685</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="L1686"></a><tt class="py-lineno">1686</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="L1687"></a><tt class="py-lineno">1687</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-1057" 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-1052', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line">        <tt id="link-1053" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1053', '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-1054" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1057', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1688"></a><tt class="py-lineno">1688</tt>  <tt class="py-line">        <tt id="link-1058" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1058', '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-1059" 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-1054', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
-<a name="L1674"></a><tt class="py-lineno">1674</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
-<a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line"><tt class="py-string">    &lt;myns:myext&gt;&lt;x&gt;X&lt;/x&gt;&lt;y&gt;Y&lt;/y&gt;&lt;z/&gt;&lt;/myns:myext&gt;</tt> </tt>
-<a name="L1676"></a><tt class="py-lineno">1676</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="x"&gt;&lt;xsl:processing-instruction name="test"&gt;TEST&lt;/xsl:processing-instruction&gt;&lt;/xsl:template&gt;</tt> </tt>
-<a name="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="y"&gt;&lt;Y&gt;XYZ&lt;/Y&gt;&lt;/xsl:template&gt;</tt> </tt>
-<a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="z"&gt;&lt;xsl:comment&gt;TEST&lt;/xsl:comment&gt;&lt;/xsl:template&gt;</tt> </tt>
-<a name="L1680"></a><tt class="py-lineno">1680</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<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-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="L1683"></a><tt class="py-lineno">1683</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="L1684"></a><tt class="py-lineno">1684</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="L1685"></a><tt class="py-lineno">1685</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1055" class="py-name"><a title="lxml.etree.XSLTExtension.apply_templates" class="py-name" href="#" onclick="return doclink('link-1055', 'apply_templates', 'link-1010');">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="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line"> </tt>
-<a name="L1687"></a><tt class="py-lineno">1687</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="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 class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1056" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1056', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1057" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1057', '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="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-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-1058" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1058', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1059" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1059', '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="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-line">                          <tt id="link-1060" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1060', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?test TEST?&gt;&lt;Y&gt;XYZ&lt;/Y&gt;&lt;!--TEST--&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1692"></a><tt class="py-lineno">1692</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="L1693"></a><tt class="py-lineno">1693</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="L1694"></a><tt class="py-lineno">1694</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-1061" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1059', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1689"></a><tt class="py-lineno">1689</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1692"></a><tt class="py-lineno">1692</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
+<a name="L1693"></a><tt class="py-lineno">1693</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
+<a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-line"><tt class="py-string">    &lt;myns:myext&gt;&lt;x&gt;X&lt;/x&gt;&lt;y&gt;Y&lt;/y&gt;&lt;z/&gt;&lt;/myns:myext&gt;</tt> </tt>
+<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="x"&gt;&lt;xsl:processing-instruction name="test"&gt;TEST&lt;/xsl:processing-instruction&gt;&lt;/xsl:template&gt;</tt> </tt>
+<a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="y"&gt;&lt;Y&gt;XYZ&lt;/Y&gt;&lt;/xsl:template&gt;</tt> </tt>
+<a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="z"&gt;&lt;xsl:comment&gt;TEST&lt;/xsl:comment&gt;&lt;/xsl:template&gt;</tt> </tt>
+<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-line"> </tt>
+<a name="L1701"></a><tt class="py-lineno">1701</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="L1702"></a><tt class="py-lineno">1702</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="L1703"></a><tt class="py-lineno">1703</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="L1704"></a><tt class="py-lineno">1704</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1060" class="py-name"><a title="lxml.etree.XSLTExtension.apply_templates" class="py-name" href="#" onclick="return doclink('link-1060', 'apply_templates', 'link-1015');">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="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line"> </tt>
+<a name="L1706"></a><tt class="py-lineno">1706</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="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line"> </tt>
+<a name="L1708"></a><tt class="py-lineno">1708</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-1061" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1061', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1062" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1062', '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="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-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-1063" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1063', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1064" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1064', 'tostring', 'link-247');">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="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line">                          <tt id="link-1065" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1065', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?test TEST?&gt;&lt;Y&gt;XYZ&lt;/Y&gt;&lt;!--TEST--&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1711"></a><tt class="py-lineno">1711</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="L1712"></a><tt class="py-lineno">1712</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="L1713"></a><tt class="py-lineno">1713</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-1066" 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-1061', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;E&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-line">        <tt id="link-1062" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1062', '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-1063" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1066', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;E&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line">        <tt id="link-1067" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1067', '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-1068" 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-1063', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
-<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
-<a name="L1701"></a><tt class="py-lineno">1701</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:variable name="testvar"&gt;yo&lt;/xsl:variable&gt;</tt> </tt>
-<a name="L1702"></a><tt class="py-lineno">1702</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;</tt> </tt>
-<a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line"><tt class="py-string">      &lt;myns:myext&gt;</tt> </tt>
-<a name="L1704"></a><tt class="py-lineno">1704</tt>  <tt class="py-line"><tt class="py-string">        &lt;xsl:attribute name="attr"&gt;</tt> </tt>
-<a name="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:value-of select="$testvar" /&gt;</tt> </tt>
-<a name="L1706"></a><tt class="py-lineno">1706</tt>  <tt class="py-line"><tt class="py-string">        &lt;/xsl:attribute&gt;</tt> </tt>
-<a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line"><tt class="py-string">        &lt;B&gt;</tt> </tt>
-<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:choose&gt;</tt> </tt>
-<a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line"><tt class="py-string">            &lt;xsl:when test="1 = 2"&gt;&lt;C/&gt;&lt;/xsl:when&gt;</tt> </tt>
-<a name="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line"><tt class="py-string">            &lt;xsl:otherwise&gt;&lt;D&gt;&lt;xsl:value-of select="b/text()" /&gt;&lt;/D&gt;&lt;/xsl:otherwise&gt;</tt> </tt>
-<a name="L1711"></a><tt class="py-lineno">1711</tt>  <tt class="py-line"><tt class="py-string">          &lt;/xsl:choose&gt;</tt> </tt>
-<a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line"><tt class="py-string">        &lt;/B&gt;</tt> </tt>
-<a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line"><tt class="py-string">      &lt;/myns:myext&gt;</tt> </tt>
-<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line"><tt class="py-string">    &lt;/A&gt;</tt> </tt>
-<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line"> </tt>
-<a name="L1718"></a><tt class="py-lineno">1718</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="L1719"></a><tt class="py-lineno">1719</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="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line">                <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1064" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1064', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1065" class="py-name"><a title="lxml.etree.Element
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1068', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
+<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
+<a name="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line"><tt class="py-string">    &lt;xsl:variable name="testvar"&gt;yo&lt;/xsl:variable&gt;</tt> </tt>
+<a name="L1721"></a><tt class="py-lineno">1721</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;</tt> </tt>
+<a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line"><tt class="py-string">      &lt;myns:myext&gt;</tt> </tt>
+<a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line"><tt class="py-string">        &lt;xsl:attribute name="attr"&gt;</tt> </tt>
+<a name="L1724"></a><tt class="py-lineno">1724</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:value-of select="$testvar" /&gt;</tt> </tt>
+<a name="L1725"></a><tt class="py-lineno">1725</tt>  <tt class="py-line"><tt class="py-string">        &lt;/xsl:attribute&gt;</tt> </tt>
+<a name="L1726"></a><tt class="py-lineno">1726</tt>  <tt class="py-line"><tt class="py-string">        &lt;B&gt;</tt> </tt>
+<a name="L1727"></a><tt class="py-lineno">1727</tt>  <tt class="py-line"><tt class="py-string">          &lt;xsl:choose&gt;</tt> </tt>
+<a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line"><tt class="py-string">            &lt;xsl:when test="1 = 2"&gt;&lt;C/&gt;&lt;/xsl:when&gt;</tt> </tt>
+<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-line"><tt class="py-string">            &lt;xsl:otherwise&gt;&lt;D&gt;&lt;xsl:value-of select="b/text()" /&gt;&lt;/D&gt;&lt;/xsl:otherwise&gt;</tt> </tt>
+<a name="L1730"></a><tt class="py-lineno">1730</tt>  <tt class="py-line"><tt class="py-string">          &lt;/xsl:choose&gt;</tt> </tt>
+<a name="L1731"></a><tt class="py-lineno">1731</tt>  <tt class="py-line"><tt class="py-string">        &lt;/B&gt;</tt> </tt>
+<a name="L1732"></a><tt class="py-lineno">1732</tt>  <tt class="py-line"><tt class="py-string">      &lt;/myns:myext&gt;</tt> </tt>
+<a name="L1733"></a><tt class="py-lineno">1733</tt>  <tt class="py-line"><tt class="py-string">    &lt;/A&gt;</tt> </tt>
+<a name="L1734"></a><tt class="py-lineno">1734</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1735"></a><tt class="py-lineno">1735</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1736"></a><tt class="py-lineno">1736</tt>  <tt class="py-line"> </tt>
+<a name="L1737"></a><tt class="py-lineno">1737</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="L1738"></a><tt class="py-lineno">1738</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="L1739"></a><tt class="py-lineno">1739</tt>  <tt class="py-line">                <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1069" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1069', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1070" 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-1065', 'Element', 'link-962');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'MY'</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 id="link-1066" 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-1066', 'process_children', 'link-1066');">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="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line">                <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1067" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1067', 'append', 'link-597');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line"> </tt>
-<a name="L1724"></a><tt class="py-lineno">1724</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="L1725"></a><tt class="py-lineno">1725</tt>  <tt class="py-line"> </tt>
-<a name="L1726"></a><tt class="py-lineno">1726</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-1068" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1068', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1069" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1069', '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="L1727"></a><tt class="py-lineno">1727</tt>  <tt class="py-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-1070" 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-1070', '_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="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line">                          <tt id="link-1071" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1071', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;&lt;MYattr="yo"&gt;&lt;B&gt;&lt;D&gt;E&lt;/D&gt;&lt;/B&gt;&lt;/MY&gt;&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1729"></a><tt class="py-lineno">1729</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="L1730"></a><tt class="py-lineno">1730</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="L1731"></a><tt class="py-lineno">1731</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-1072" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1070', 'Element', 'link-967');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'MY'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1740"></a><tt class="py-lineno">1740</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1071" 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-1071', 'process_children', 'link-1071');">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="L1741"></a><tt class="py-lineno">1741</tt>  <tt class="py-line">                <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1072" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1072', 'append', 'link-604');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1742"></a><tt class="py-lineno">1742</tt>  <tt class="py-line"> </tt>
+<a name="L1743"></a><tt class="py-lineno">1743</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="L1744"></a><tt class="py-lineno">1744</tt>  <tt class="py-line"> </tt>
+<a name="L1745"></a><tt class="py-lineno">1745</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-1073" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1073', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1074" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1074', '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="L1746"></a><tt class="py-lineno">1746</tt>  <tt class="py-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-1075" 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-1075', '_rootstring', 'link-330');">_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="L1747"></a><tt class="py-lineno">1747</tt>  <tt class="py-line">                          <tt id="link-1076" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1076', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A&gt;&lt;MYattr="yo"&gt;&lt;B&gt;&lt;D&gt;E&lt;/D&gt;&lt;/B&gt;&lt;/MY&gt;&lt;/A&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1748"></a><tt class="py-lineno">1748</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="L1749"></a><tt class="py-lineno">1749</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="L1750"></a><tt class="py-lineno">1750</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-1077" 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-1072', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1732"></a><tt class="py-lineno">1732</tt>  <tt class="py-line">        <tt id="link-1073" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1073', '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-1074" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1077', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1751"></a><tt class="py-lineno">1751</tt>  <tt class="py-line">        <tt id="link-1078" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1078', '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-1079" 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-1074', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1733"></a><tt class="py-lineno">1733</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1734"></a><tt class="py-lineno">1734</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1735"></a><tt class="py-lineno">1735</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1736"></a><tt class="py-lineno">1736</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
-<a name="L1737"></a><tt class="py-lineno">1737</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
-<a name="L1738"></a><tt class="py-lineno">1738</tt>  <tt class="py-line"><tt class="py-string">    &lt;myns:myext&gt;</tt> </tt>
-<a name="L1739"></a><tt class="py-lineno">1739</tt>  <tt class="py-line"><tt class="py-string">      &lt;A/&gt;</tt> </tt>
-<a name="L1740"></a><tt class="py-lineno">1740</tt>  <tt class="py-line"><tt class="py-string">    &lt;/myns:myext&gt;</tt> </tt>
-<a name="L1741"></a><tt class="py-lineno">1741</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1742"></a><tt class="py-lineno">1742</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1743"></a><tt class="py-lineno">1743</tt>  <tt class="py-line"> </tt>
-<a name="L1744"></a><tt class="py-lineno">1744</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="L1745"></a><tt class="py-lineno">1745</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="L1746"></a><tt class="py-lineno">1746</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1075" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-1075', 'process_children', 'link-1066');">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="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 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="L1749"></a><tt class="py-lineno">1749</tt>  <tt class="py-line"> </tt>
-<a name="L1750"></a><tt class="py-lineno">1750</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-1076" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1076', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1077" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1077', '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="L1751"></a><tt class="py-lineno">1751</tt>  <tt class="py-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-1078" 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-1078', '_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="L1752"></a><tt class="py-lineno">1752</tt>  <tt class="py-line">                          <tt id="link-1079" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1079', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1753"></a><tt class="py-lineno">1753</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="L1754"></a><tt class="py-lineno">1754</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="L1755"></a><tt class="py-lineno">1755</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-1080" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1079', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1752"></a><tt class="py-lineno">1752</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1753"></a><tt class="py-lineno">1753</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1754"></a><tt class="py-lineno">1754</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1755"></a><tt class="py-lineno">1755</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
+<a name="L1756"></a><tt class="py-lineno">1756</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
+<a name="L1757"></a><tt class="py-lineno">1757</tt>  <tt class="py-line"><tt class="py-string">    &lt;myns:myext&gt;</tt> </tt>
+<a name="L1758"></a><tt class="py-lineno">1758</tt>  <tt class="py-line"><tt class="py-string">      &lt;A/&gt;</tt> </tt>
+<a name="L1759"></a><tt class="py-lineno">1759</tt>  <tt class="py-line"><tt class="py-string">    &lt;/myns:myext&gt;</tt> </tt>
+<a name="L1760"></a><tt class="py-lineno">1760</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1761"></a><tt class="py-lineno">1761</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<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">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="L1764"></a><tt class="py-lineno">1764</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="L1765"></a><tt class="py-lineno">1765</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1080" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-1080', 'process_children', 'link-1071');">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="L1766"></a><tt class="py-lineno">1766</tt>  <tt class="py-line"> </tt>
+<a name="L1767"></a><tt class="py-lineno">1767</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="L1768"></a><tt class="py-lineno">1768</tt>  <tt class="py-line"> </tt>
+<a name="L1769"></a><tt class="py-lineno">1769</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-1081" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1081', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1082" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1082', '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="L1770"></a><tt class="py-lineno">1770</tt>  <tt class="py-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-1083" 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-1083', '_rootstring', 'link-330');">_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="L1771"></a><tt class="py-lineno">1771</tt>  <tt class="py-line">                          <tt id="link-1084" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1084', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;A/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1772"></a><tt class="py-lineno">1772</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="L1773"></a><tt class="py-lineno">1773</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="L1774"></a><tt class="py-lineno">1774</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-1085" 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-1080', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1756"></a><tt class="py-lineno">1756</tt>  <tt class="py-line">        <tt id="link-1081" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1081', '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-1082" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1085', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1775"></a><tt class="py-lineno">1775</tt>  <tt class="py-line">        <tt id="link-1086" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1086', '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-1087" 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-1082', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1757"></a><tt class="py-lineno">1757</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1758"></a><tt class="py-lineno">1758</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1759"></a><tt class="py-lineno">1759</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1760"></a><tt class="py-lineno">1760</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
-<a name="L1761"></a><tt class="py-lineno">1761</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
-<a name="L1762"></a><tt class="py-lineno">1762</tt>  <tt class="py-line"><tt class="py-string">    &lt;myns:myext&gt;</tt> </tt>
-<a name="L1763"></a><tt class="py-lineno">1763</tt>  <tt class="py-line"><tt class="py-string">      &lt;A/&gt;</tt> </tt>
-<a name="L1764"></a><tt class="py-lineno">1764</tt>  <tt class="py-line"><tt class="py-string">    &lt;/myns:myext&gt;</tt> </tt>
-<a name="L1765"></a><tt class="py-lineno">1765</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1766"></a><tt class="py-lineno">1766</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1767"></a><tt class="py-lineno">1767</tt>  <tt class="py-line"> </tt>
-<a name="L1768"></a><tt class="py-lineno">1768</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="L1769"></a><tt class="py-lineno">1769</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="L1770"></a><tt class="py-lineno">1770</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1083" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-1083', 'process_children', 'link-1066');">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="L1771"></a><tt class="py-lineno">1771</tt>  <tt class="py-line"> </tt>
-<a name="L1772"></a><tt class="py-lineno">1772</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="L1773"></a><tt class="py-lineno">1773</tt>  <tt class="py-line"> </tt>
-<a name="L1774"></a><tt class="py-lineno">1774</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-1084" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1084', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-1085" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1085', '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="L1775"></a><tt class="py-lineno">1775</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="L1776"></a><tt class="py-lineno">1776</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="L1777"></a><tt class="py-lineno">1777</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-1086" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1087', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1776"></a><tt class="py-lineno">1776</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1777"></a><tt class="py-lineno">1777</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1778"></a><tt class="py-lineno">1778</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1779"></a><tt class="py-lineno">1779</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
+<a name="L1780"></a><tt class="py-lineno">1780</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
+<a name="L1781"></a><tt class="py-lineno">1781</tt>  <tt class="py-line"><tt class="py-string">    &lt;myns:myext&gt;</tt> </tt>
+<a name="L1782"></a><tt class="py-lineno">1782</tt>  <tt class="py-line"><tt class="py-string">      &lt;A/&gt;</tt> </tt>
+<a name="L1783"></a><tt class="py-lineno">1783</tt>  <tt class="py-line"><tt class="py-string">    &lt;/myns:myext&gt;</tt> </tt>
+<a name="L1784"></a><tt class="py-lineno">1784</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1785"></a><tt class="py-lineno">1785</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1786"></a><tt class="py-lineno">1786</tt>  <tt class="py-line"> </tt>
+<a name="L1787"></a><tt class="py-lineno">1787</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="L1788"></a><tt class="py-lineno">1788</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="L1789"></a><tt class="py-lineno">1789</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1088" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-1088', 'process_children', 'link-1071');">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="L1790"></a><tt class="py-lineno">1790</tt>  <tt class="py-line"> </tt>
+<a name="L1791"></a><tt class="py-lineno">1791</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="L1792"></a><tt class="py-lineno">1792</tt>  <tt class="py-line"> </tt>
+<a name="L1793"></a><tt class="py-lineno">1793</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-1089" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1089', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-1090" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1090', '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="L1794"></a><tt class="py-lineno">1794</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="L1795"></a><tt class="py-lineno">1795</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="L1796"></a><tt class="py-lineno">1796</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-1091" 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-1086', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1778"></a><tt class="py-lineno">1778</tt>  <tt class="py-line">        <tt id="link-1087" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1087', '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-1088" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1091', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a/&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1797"></a><tt class="py-lineno">1797</tt>  <tt class="py-line">        <tt id="link-1092" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1092', '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-1093" 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-1088', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1779"></a><tt class="py-lineno">1779</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1780"></a><tt class="py-lineno">1780</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1781"></a><tt class="py-lineno">1781</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1782"></a><tt class="py-lineno">1782</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
-<a name="L1783"></a><tt class="py-lineno">1783</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
-<a name="L1784"></a><tt class="py-lineno">1784</tt>  <tt class="py-line"><tt class="py-string">    &lt;myns:myext&gt;</tt> </tt>
-<a name="L1785"></a><tt class="py-lineno">1785</tt>  <tt class="py-line"><tt class="py-string">      &lt;A&gt;&lt;myns:myext&gt;&lt;B/&gt;&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1786"></a><tt class="py-lineno">1786</tt>  <tt class="py-line"><tt class="py-string">    &lt;/myns:myext&gt;</tt> </tt>
-<a name="L1787"></a><tt class="py-lineno">1787</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1788"></a><tt class="py-lineno">1788</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1789"></a><tt class="py-lineno">1789</tt>  <tt class="py-line"> </tt>
-<a name="L1790"></a><tt class="py-lineno">1790</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="L1791"></a><tt class="py-lineno">1791</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="L1792"></a><tt class="py-lineno">1792</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="L1793"></a><tt class="py-lineno">1793</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="L1794"></a><tt class="py-lineno">1794</tt>  <tt class="py-line">                <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1089" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1089', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1090" class="py-name"><a title="lxml.etree.Element
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1093', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1798"></a><tt class="py-lineno">1798</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1799"></a><tt class="py-lineno">1799</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1800"></a><tt class="py-lineno">1800</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1801"></a><tt class="py-lineno">1801</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"&gt;</tt> </tt>
+<a name="L1802"></a><tt class="py-lineno">1802</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
+<a name="L1803"></a><tt class="py-lineno">1803</tt>  <tt class="py-line"><tt class="py-string">    &lt;myns:myext&gt;</tt> </tt>
+<a name="L1804"></a><tt class="py-lineno">1804</tt>  <tt class="py-line"><tt class="py-string">      &lt;A&gt;&lt;myns:myext&gt;&lt;B/&gt;&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1805"></a><tt class="py-lineno">1805</tt>  <tt class="py-line"><tt class="py-string">    &lt;/myns:myext&gt;</tt> </tt>
+<a name="L1806"></a><tt class="py-lineno">1806</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1807"></a><tt class="py-lineno">1807</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1808"></a><tt class="py-lineno">1808</tt>  <tt class="py-line"> </tt>
+<a name="L1809"></a><tt class="py-lineno">1809</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="L1810"></a><tt class="py-lineno">1810</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="L1811"></a><tt class="py-lineno">1811</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="L1812"></a><tt class="py-lineno">1812</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="L1813"></a><tt class="py-lineno">1813</tt>  <tt class="py-line">                <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1094" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1094', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1095" 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-1090', 'Element', 'link-962');">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-1091" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-1091', '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="L1795"></a><tt class="py-lineno">1795</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1092" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-1092', 'process_children', 'link-1066');">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="L1796"></a><tt class="py-lineno">1796</tt>  <tt class="py-line">                <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1093" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1093', 'append', 'link-597');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1797"></a><tt class="py-lineno">1797</tt>  <tt class="py-line"> </tt>
-<a name="L1798"></a><tt class="py-lineno">1798</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="L1799"></a><tt class="py-lineno">1799</tt>  <tt class="py-line"> </tt>
-<a name="L1800"></a><tt class="py-lineno">1800</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-1094" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1094', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1095" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1095', '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="L1801"></a><tt class="py-lineno">1801</tt>  <tt class="py-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-1096" 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-1096', '_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="L1802"></a><tt class="py-lineno">1802</tt>  <tt class="py-line">                          <tt id="link-1097" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1097', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;MYn="1"&gt;&lt;A&gt;&lt;MYn="2"&gt;&lt;B/&gt;&lt;/MY&gt;&lt;/A&gt;&lt;/MY&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1803"></a><tt class="py-lineno">1803</tt>  <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element_raise"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_raise-def"><a name="L1804"></a><tt class="py-lineno">1804</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="L1805"></a><tt class="py-lineno">1805</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-1098" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1095', 'Element', 'link-967');">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-1096" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-1096', '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="L1814"></a><tt class="py-lineno">1814</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1097" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-1097', 'process_children', 'link-1071');">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="L1815"></a><tt class="py-lineno">1815</tt>  <tt class="py-line">                <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1098" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1098', 'append', 'link-604');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1816"></a><tt class="py-lineno">1816</tt>  <tt class="py-line"> </tt>
+<a name="L1817"></a><tt class="py-lineno">1817</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="L1818"></a><tt class="py-lineno">1818</tt>  <tt class="py-line"> </tt>
+<a name="L1819"></a><tt class="py-lineno">1819</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-1099" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1099', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1100" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1100', '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="L1820"></a><tt class="py-lineno">1820</tt>  <tt class="py-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-1101" 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-1101', '_rootstring', 'link-330');">_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="L1821"></a><tt class="py-lineno">1821</tt>  <tt class="py-line">                          <tt id="link-1102" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1102', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;MYn="1"&gt;&lt;A&gt;&lt;MYn="2"&gt;&lt;B/&gt;&lt;/MY&gt;&lt;/A&gt;&lt;/MY&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1822"></a><tt class="py-lineno">1822</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element_raise"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_raise-def"><a name="L1823"></a><tt class="py-lineno">1823</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="L1824"></a><tt class="py-lineno">1824</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-1103" 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-1098', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1806"></a><tt class="py-lineno">1806</tt>  <tt class="py-line">        <tt id="link-1099" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1099', '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-1100" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1103', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1825"></a><tt class="py-lineno">1825</tt>  <tt class="py-line">        <tt id="link-1104" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1104', '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-1105" 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-1100', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1807"></a><tt class="py-lineno">1807</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1808"></a><tt class="py-lineno">1808</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1809"></a><tt class="py-lineno">1809</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
-<a name="L1810"></a><tt class="py-lineno">1810</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"</tt> </tt>
-<a name="L1811"></a><tt class="py-lineno">1811</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="myns"&gt;</tt> </tt>
-<a name="L1812"></a><tt class="py-lineno">1812</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
-<a name="L1813"></a><tt class="py-lineno">1813</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;b&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
-<a name="L1814"></a><tt class="py-lineno">1814</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1815"></a><tt class="py-lineno">1815</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1816"></a><tt class="py-lineno">1816</tt>  <tt class="py-line"> </tt>
-<a name="L1817"></a><tt class="py-lineno">1817</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="L1818"></a><tt class="py-lineno">1818</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L1819"></a><tt class="py-lineno">1819</tt>  <tt class="py-line"> </tt>
-<a name="L1820"></a><tt class="py-lineno">1820</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="L1821"></a><tt class="py-lineno">1821</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="L1822"></a><tt class="py-lineno">1822</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="L1823"></a><tt class="py-lineno">1823</tt>  <tt class="py-line"> </tt>
-<a name="L1824"></a><tt class="py-lineno">1824</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="L1825"></a><tt class="py-lineno">1825</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-1101" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1101', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-1102" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1102', '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="L1826"></a><tt class="py-lineno">1826</tt>  <tt class="py-line"> </tt>
-<a name="L1827"></a><tt class="py-lineno">1827</tt>  <tt class="py-line">    <tt class="py-comment"># FIXME: DISABLED - implementation seems to be broken</tt> </tt>
-<a name="L1828"></a><tt class="py-lineno">1828</tt>  <tt class="py-line">    <tt class="py-comment"># if someone cares enough about this feature, I take pull requests that fix it.</tt> </tt>
-<a name="ETreeXSLTExtElementTestCase._test_multiple_extension_elements_with_output_parent"></a><div id="ETreeXSLTExtElementTestCase._test_multiple_extension_elements_with_output_parent-def"><a name="L1829"></a><tt class="py-lineno">1829</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase._test_multiple_extension_elements_with_output_parent-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase._test_multiple_extension_elements_with_output_parent');">-</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_multiple_extension_elements_with_output_parent">_test_multiple_extension_elements_with_output_parent</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_multiple_extension_elements_with_output_parent-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase._test_multiple_extension_elements_with_output_parent-expanded"><a name="L1830"></a><tt class="py-lineno">1830</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-1103" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1105', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1826"></a><tt class="py-lineno">1826</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1827"></a><tt class="py-lineno">1827</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1828"></a><tt class="py-lineno">1828</tt>  <tt class="py-line"><tt class="py-string">    xmlns:myns="testns"</tt> </tt>
+<a name="L1829"></a><tt class="py-lineno">1829</tt>  <tt class="py-line"><tt class="py-string">    extension-element-prefixes="myns"</tt> </tt>
+<a name="L1830"></a><tt class="py-lineno">1830</tt>  <tt class="py-line"><tt class="py-string">    exclude-result-prefixes="myns"&gt;</tt> </tt>
+<a name="L1831"></a><tt class="py-lineno">1831</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="a"&gt;</tt> </tt>
+<a name="L1832"></a><tt class="py-lineno">1832</tt>  <tt class="py-line"><tt class="py-string">    &lt;A&gt;&lt;myns:myext&gt;b&lt;/myns:myext&gt;&lt;/A&gt;</tt> </tt>
+<a name="L1833"></a><tt class="py-lineno">1833</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1834"></a><tt class="py-lineno">1834</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1835"></a><tt class="py-lineno">1835</tt>  <tt class="py-line"> </tt>
+<a name="L1836"></a><tt class="py-lineno">1836</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="L1837"></a><tt class="py-lineno">1837</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L1838"></a><tt class="py-lineno">1838</tt>  <tt class="py-line"> </tt>
+<a name="L1839"></a><tt class="py-lineno">1839</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="L1840"></a><tt class="py-lineno">1840</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="L1841"></a><tt class="py-lineno">1841</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="L1842"></a><tt class="py-lineno">1842</tt>  <tt class="py-line"> </tt>
+<a name="L1843"></a><tt class="py-lineno">1843</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="L1844"></a><tt class="py-lineno">1844</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-1106" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1106', 'xslt', 'link-237');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-1107" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1107', '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="L1845"></a><tt class="py-lineno">1845</tt>  <tt class="py-line"> </tt>
+<a name="L1846"></a><tt class="py-lineno">1846</tt>  <tt class="py-line">    <tt class="py-comment"># FIXME: DISABLED - implementation seems to be broken</tt> </tt>
+<a name="L1847"></a><tt class="py-lineno">1847</tt>  <tt class="py-line">    <tt class="py-comment"># if someone cares enough about this feature, I take pull requests that fix it.</tt> </tt>
+<a name="ETreeXSLTExtElementTestCase._test_multiple_extension_elements_with_output_parent"></a><div id="ETreeXSLTExtElementTestCase._test_multiple_extension_elements_with_output_parent-def"><a name="L1848"></a><tt class="py-lineno">1848</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase._test_multiple_extension_elements_with_output_parent-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase._test_multiple_extension_elements_with_output_parent');">-</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_multiple_extension_elements_with_output_parent">_test_multiple_extension_elements_with_output_parent</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_multiple_extension_elements_with_output_parent-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase._test_multiple_extension_elements_with_output_parent-expanded"><a name="L1849"></a><tt class="py-lineno">1849</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-1108" 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-1103', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1831"></a><tt class="py-lineno">1831</tt>  <tt class="py-line"><tt class="py-string">&lt;text&gt;</tt> </tt>
-<a name="L1832"></a><tt class="py-lineno">1832</tt>  <tt class="py-line"><tt class="py-string">  &lt;par&gt;This is &lt;format&gt;arbitrary&lt;/format&gt; text in a paragraph&lt;/par&gt;</tt> </tt>
-<a name="L1833"></a><tt class="py-lineno">1833</tt>  <tt class="py-line"><tt class="py-string">&lt;/text&gt;"""</tt><tt class="py-op">)</tt> </tt>
-<a name="L1834"></a><tt class="py-lineno">1834</tt>  <tt class="py-line">        <tt id="link-1104" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1104', '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-1105" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1108', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1850"></a><tt class="py-lineno">1850</tt>  <tt class="py-line"><tt class="py-string">&lt;text&gt;</tt> </tt>
+<a name="L1851"></a><tt class="py-lineno">1851</tt>  <tt class="py-line"><tt class="py-string">  &lt;par&gt;This is &lt;format&gt;arbitrary&lt;/format&gt; text in a paragraph&lt;/par&gt;</tt> </tt>
+<a name="L1852"></a><tt class="py-lineno">1852</tt>  <tt class="py-line"><tt class="py-string">&lt;/text&gt;"""</tt><tt class="py-op">)</tt> </tt>
+<a name="L1853"></a><tt class="py-lineno">1853</tt>  <tt class="py-line">        <tt id="link-1109" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1109', '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-1110" 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-1105', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1835"></a><tt class="py-lineno">1835</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="my" extension-element-prefixes="my" version="1.0"&gt;</tt> </tt>
-<a name="L1836"></a><tt class="py-lineno">1836</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="par"&gt;</tt> </tt>
-<a name="L1837"></a><tt class="py-lineno">1837</tt>  <tt class="py-line"><tt class="py-string">    &lt;my:par&gt;&lt;xsl:apply-templates /&gt;&lt;/my:par&gt;</tt> </tt>
-<a name="L1838"></a><tt class="py-lineno">1838</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1839"></a><tt class="py-lineno">1839</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="format"&gt;</tt> </tt>
-<a name="L1840"></a><tt class="py-lineno">1840</tt>  <tt class="py-line"><tt class="py-string">    &lt;my:format&gt;&lt;xsl:apply-templates /&gt;&lt;/my:format&gt;</tt> </tt>
-<a name="L1841"></a><tt class="py-lineno">1841</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1842"></a><tt class="py-lineno">1842</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
-<a name="L1843"></a><tt class="py-lineno">1843</tt>  <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt> </tt>
-<a name="L1844"></a><tt class="py-lineno">1844</tt>  <tt class="py-line">        <tt class="py-name">test</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
-<a name="L1845"></a><tt class="py-lineno">1845</tt>  <tt class="py-line">        <tt class="py-name">calls</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L1846"></a><tt class="py-lineno">1846</tt>  <tt class="py-line"> </tt>
-<a name="L1847"></a><tt class="py-lineno">1847</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">ExtMyPar</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="L1848"></a><tt class="py-lineno">1848</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="L1849"></a><tt class="py-lineno">1849</tt>  <tt class="py-line">                <tt class="py-name">calls</tt><tt class="py-op">.</tt><tt id="link-1106" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1106', 'append', 'link-597');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">'par'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1850"></a><tt class="py-lineno">1850</tt>  <tt class="py-line">                <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-1107" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1107', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1108" class="py-name"><a title="lxml.etree.Element
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1110', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1854"></a><tt class="py-lineno">1854</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="my" extension-element-prefixes="my" version="1.0"&gt;</tt> </tt>
+<a name="L1855"></a><tt class="py-lineno">1855</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="par"&gt;</tt> </tt>
+<a name="L1856"></a><tt class="py-lineno">1856</tt>  <tt class="py-line"><tt class="py-string">    &lt;my:par&gt;&lt;xsl:apply-templates /&gt;&lt;/my:par&gt;</tt> </tt>
+<a name="L1857"></a><tt class="py-lineno">1857</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1858"></a><tt class="py-lineno">1858</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="format"&gt;</tt> </tt>
+<a name="L1859"></a><tt class="py-lineno">1859</tt>  <tt class="py-line"><tt class="py-string">    &lt;my:format&gt;&lt;xsl:apply-templates /&gt;&lt;/my:format&gt;</tt> </tt>
+<a name="L1860"></a><tt class="py-lineno">1860</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1861"></a><tt class="py-lineno">1861</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;</tt> </tt>
+<a name="L1862"></a><tt class="py-lineno">1862</tt>  <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt> </tt>
+<a name="L1863"></a><tt class="py-lineno">1863</tt>  <tt class="py-line">        <tt class="py-name">test</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
+<a name="L1864"></a><tt class="py-lineno">1864</tt>  <tt class="py-line">        <tt class="py-name">calls</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1865"></a><tt class="py-lineno">1865</tt>  <tt class="py-line"> </tt>
+<a name="L1866"></a><tt class="py-lineno">1866</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">ExtMyPar</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="L1867"></a><tt class="py-lineno">1867</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="L1868"></a><tt class="py-lineno">1868</tt>  <tt class="py-line">                <tt class="py-name">calls</tt><tt class="py-op">.</tt><tt id="link-1111" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1111', 'append', 'link-604');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">'par'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1869"></a><tt class="py-lineno">1869</tt>  <tt class="py-line">                <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-1112" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1112', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1113" 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-1108', 'Element', 'link-962');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"p"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1851"></a><tt class="py-lineno">1851</tt>  <tt class="py-line">                <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-1109" 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,Function lxml.tests.selftest2.attrib()=lxml.tests.selftest2-module.html#attrib,Variable xml.etree.ElementTree.Element.attrib=xml.etree.ElementTree.Element-class.html#attrib"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1113', 'Element', 'link-967');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"p"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1870"></a><tt class="py-lineno">1870</tt>  <tt class="py-line">                <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-1114" 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,Function lxml.tests.selftest2.attrib()=lxml.tests.selftest2-module.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
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1109', 'attrib', 'link-1109');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">"style"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"color:red"</tt> </tt>
-<a name="L1852"></a><tt class="py-lineno">1852</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1110" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-1110', 'process_children', 'link-1066');">process_children</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">)</tt> </tt>
-<a name="L1853"></a><tt class="py-lineno">1853</tt>  <tt class="py-line">                <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1111" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1111', 'append', 'link-597');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1854"></a><tt class="py-lineno">1854</tt>  <tt class="py-line"> </tt>
-<a name="L1855"></a><tt class="py-lineno">1855</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">ExtMyFormat</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="L1856"></a><tt class="py-lineno">1856</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="L1857"></a><tt class="py-lineno">1857</tt>  <tt class="py-line">                <tt class="py-name">calls</tt><tt class="py-op">.</tt><tt id="link-1112" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1112', 'append', 'link-597');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">'format'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1858"></a><tt class="py-lineno">1858</tt>  <tt class="py-line">                <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1113" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-1113', 'process_children', 'link-1066');">process_children</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">)</tt> </tt>
-<a name="L1859"></a><tt class="py-lineno">1859</tt>  <tt class="py-line">                <tt class="py-name">test</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1860"></a><tt class="py-lineno">1860</tt>  <tt class="py-line">                <tt class="py-name">test</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'arbitrary'</tt><tt class="py-op">,</tt> <tt class="py-name">content</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="L1861"></a><tt class="py-lineno">1861</tt>  <tt class="py-line">                <tt class="py-name">test</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'This is '</tt><tt class="py-op">,</tt> <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1114" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1114', 'attrib', 'link-1114');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">"style"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"color:red"</tt> </tt>
+<a name="L1871"></a><tt class="py-lineno">1871</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1115" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-1115', 'process_children', 'link-1071');">process_children</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">)</tt> </tt>
+<a name="L1872"></a><tt class="py-lineno">1872</tt>  <tt class="py-line">                <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1116" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1116', 'append', 'link-604');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1873"></a><tt class="py-lineno">1873</tt>  <tt class="py-line"> </tt>
+<a name="L1874"></a><tt class="py-lineno">1874</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">ExtMyFormat</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="L1875"></a><tt class="py-lineno">1875</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="L1876"></a><tt class="py-lineno">1876</tt>  <tt class="py-line">                <tt class="py-name">calls</tt><tt class="py-op">.</tt><tt id="link-1117" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1117', 'append', 'link-604');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">'format'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1877"></a><tt class="py-lineno">1877</tt>  <tt class="py-line">                <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1118" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-1118', 'process_children', 'link-1071');">process_children</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">)</tt> </tt>
+<a name="L1878"></a><tt class="py-lineno">1878</tt>  <tt class="py-line">                <tt class="py-name">test</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1879"></a><tt class="py-lineno">1879</tt>  <tt class="py-line">                <tt class="py-name">test</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'arbitrary'</tt><tt class="py-op">,</tt> <tt class="py-name">content</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="L1880"></a><tt class="py-lineno">1880</tt>  <tt class="py-line">                <tt class="py-name">test</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'This is '</tt><tt class="py-op">,</tt> <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1119" 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-1114', 'text', 'link-372');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1862"></a><tt class="py-lineno">1862</tt>  <tt class="py-line">                <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1115" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1119', 'text', 'link-375');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1881"></a><tt class="py-lineno">1881</tt>  <tt class="py-line">                <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1120" 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-1115', 'text', 'link-372');">text</a></tt> <tt class="py-op">+=</tt> <tt class="py-string">'*-%s-*'</tt> <tt class="py-op">%</tt> <tt class="py-name">content</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-</div></div><a name="L1863"></a><tt class="py-lineno">1863</tt>  <tt class="py-line"> </tt>
-<a name="L1864"></a><tt class="py-lineno">1864</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">"my"</tt><tt class="py-op">,</tt> <tt class="py-string">"par"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">ExtMyPar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">"my"</tt><tt class="py-op">,</tt> <tt class="py-string">"format"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">ExtMyFormat</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">}</tt> </tt>
-<a name="L1865"></a><tt class="py-lineno">1865</tt>  <tt class="py-line">        <tt class="py-name">transform</tt> <tt class="py-op">=</tt> <tt id="link-1116" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1120', 'text', 'link-375');">text</a></tt> <tt class="py-op">+=</tt> <tt class="py-string">'*-%s-*'</tt> <tt class="py-op">%</tt> <tt class="py-name">content</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+</div></div><a name="L1882"></a><tt class="py-lineno">1882</tt>  <tt class="py-line"> </tt>
+<a name="L1883"></a><tt class="py-lineno">1883</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">"my"</tt><tt class="py-op">,</tt> <tt class="py-string">"par"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">ExtMyPar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">"my"</tt><tt class="py-op">,</tt> <tt class="py-string">"format"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">ExtMyFormat</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">}</tt> </tt>
+<a name="L1884"></a><tt class="py-lineno">1884</tt>  <tt class="py-line">        <tt class="py-name">transform</tt> <tt class="py-op">=</tt> <tt id="link-1121" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1116', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1117" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-1117', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-1118" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1118', '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="L1866"></a><tt class="py-lineno">1866</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">tree</tt><tt class="py-op">)</tt> </tt>
-<a name="L1867"></a><tt class="py-lineno">1867</tt>  <tt class="py-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-op">[</tt><tt class="py-string">'par'</tt><tt class="py-op">,</tt> <tt class="py-string">'format'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">calls</tt><tt class="py-op">)</tt> </tt>
-<a name="L1868"></a><tt class="py-lineno">1868</tt>  <tt class="py-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="L1869"></a><tt class="py-lineno">1869</tt>  <tt class="py-line">            <tt class="py-string">b'&lt;p style="color:red"&gt;This is *-arbitrary-* text in a paragraph&lt;/p&gt;\n'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1870"></a><tt class="py-lineno">1870</tt>  <tt class="py-line">            <tt id="link-1119" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1121', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1122" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-1122', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-1123" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1123', '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="L1885"></a><tt class="py-lineno">1885</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">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L1886"></a><tt class="py-lineno">1886</tt>  <tt class="py-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-op">[</tt><tt class="py-string">'par'</tt><tt class="py-op">,</tt> <tt class="py-string">'format'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">calls</tt><tt class="py-op">)</tt> </tt>
+<a name="L1887"></a><tt class="py-lineno">1887</tt>  <tt class="py-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="L1888"></a><tt class="py-lineno">1888</tt>  <tt class="py-line">            <tt class="py-string">b'&lt;p style="color:red"&gt;This is *-arbitrary-* text in a paragraph&lt;/p&gt;\n'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1889"></a><tt class="py-lineno">1889</tt>  <tt class="py-line">            <tt id="link-1124" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1119', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1120" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1120', '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>
-</div></div><a name="L1871"></a><tt class="py-lineno">1871</tt>  <tt class="py-line"> </tt>
-<a name="L1872"></a><tt class="py-lineno">1872</tt>  <tt class="py-line"> </tt>
-<a name="Py3XSLTTestCase"></a><div id="Py3XSLTTestCase-def"><a name="L1873"></a><tt class="py-lineno">1873</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="L1874"></a><tt class="py-lineno">1874</tt>  <tt class="py-line">    <tt class="py-docstring">"""XSLT tests for etree under Python 3"""</tt> </tt>
-<a name="L1875"></a><tt class="py-lineno">1875</tt>  <tt class="py-line"> </tt>
-<a name="L1876"></a><tt class="py-lineno">1876</tt>  <tt class="py-line">    <tt id="link-1121" class="py-name" targets="Variable lxml.tests.test_css.CSSTestCase.pytestmark=lxml.tests.test_css.CSSTestCase-class.html#pytestmark,Variable lxml.tests.test_relaxng.RelaxNGCompactTestCase.pytestmark=lxml.tests.test_relaxng.RelaxNGCompactTestCase-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_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1124', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1125" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1125', 'tostring', 'link-247');">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>
+</div></div><a name="L1890"></a><tt class="py-lineno">1890</tt>  <tt class="py-line"> </tt>
+<a name="L1891"></a><tt class="py-lineno">1891</tt>  <tt class="py-line"> </tt>
+<a name="Py3XSLTTestCase"></a><div id="Py3XSLTTestCase-def"><a name="L1892"></a><tt class="py-lineno">1892</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="L1893"></a><tt class="py-lineno">1893</tt>  <tt class="py-line">    <tt class="py-docstring">"""XSLT tests for etree under Python 3"""</tt> </tt>
+<a name="L1894"></a><tt class="py-lineno">1894</tt>  <tt class="py-line"> </tt>
+<a name="L1895"></a><tt class="py-lineno">1895</tt>  <tt class="py-line">    <tt id="link-1126" class="py-name" targets="Variable lxml.tests.test_css.CSSTestCase.pytestmark=lxml.tests.test_css.CSSTestCase-class.html#pytestmark,Variable lxml.tests.test_relaxng.RelaxNGCompactTestCase.pytestmark=lxml.tests.test_relaxng.RelaxNGCompactTestCase-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_relaxng.RelaxNGCompactTestCase.pytestmark
-lxml.tests.test_xslt.Py3XSLTTestCase.pytestmark" class="py-name" href="#" onclick="return doclink('link-1121', 'pytestmark', 'link-1121');">pytestmark</a></tt> <tt class="py-op">=</tt> <tt id="link-1122" class="py-name"><a title="lxml.tests.common_imports.skipif" class="py-name" href="#" onclick="return doclink('link-1122', 'skipif', 'link-22');">skipif</a></tt><tt class="py-op">(</tt><tt class="py-string">'sys.version_info &lt; (3,0)'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1877"></a><tt class="py-lineno">1877</tt>  <tt class="py-line"> </tt>
-<a name="Py3XSLTTestCase.test_xslt_result_bytes"></a><div id="Py3XSLTTestCase.test_xslt_result_bytes-def"><a name="L1878"></a><tt class="py-lineno">1878</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="L1879"></a><tt class="py-lineno">1879</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-1123" 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-1123', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1880"></a><tt class="py-lineno">1880</tt>  <tt class="py-line">        <tt id="link-1124" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1124', '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-1125" 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-1125', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1881"></a><tt class="py-lineno">1881</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1882"></a><tt class="py-lineno">1882</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
-<a name="L1883"></a><tt class="py-lineno">1883</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
-<a name="L1884"></a><tt class="py-lineno">1884</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
-<a name="L1885"></a><tt class="py-lineno">1885</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
-<a name="L1886"></a><tt class="py-lineno">1886</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
-<a name="L1887"></a><tt class="py-lineno">1887</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1888"></a><tt class="py-lineno">1888</tt>  <tt class="py-line"> </tt>
-<a name="L1889"></a><tt class="py-lineno">1889</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-1126" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1126', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1127" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-1127', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-1128" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1128', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1890"></a><tt class="py-lineno">1890</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="L1891"></a><tt class="py-lineno">1891</tt>  <tt class="py-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-1129" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1129', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1892"></a><tt class="py-lineno">1892</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
-<a name="L1893"></a><tt class="py-lineno">1893</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
-<a name="L1894"></a><tt class="py-lineno">1894</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1895"></a><tt class="py-lineno">1895</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="L1896"></a><tt class="py-lineno">1896</tt>  <tt class="py-line"> </tt>
-<a name="Py3XSLTTestCase.test_xslt_result_bytearray"></a><div id="Py3XSLTTestCase.test_xslt_result_bytearray-def"><a name="L1897"></a><tt class="py-lineno">1897</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="L1898"></a><tt class="py-lineno">1898</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-1130" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_xslt.Py3XSLTTestCase.pytestmark" class="py-name" href="#" onclick="return doclink('link-1126', 'pytestmark', 'link-1126');">pytestmark</a></tt> <tt class="py-op">=</tt> <tt id="link-1127" class="py-name"><a title="lxml.tests.common_imports.skipif" class="py-name" href="#" onclick="return doclink('link-1127', 'skipif', 'link-22');">skipif</a></tt><tt class="py-op">(</tt><tt class="py-string">'sys.version_info &lt; (3,0)'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1896"></a><tt class="py-lineno">1896</tt>  <tt class="py-line"> </tt>
+<a name="Py3XSLTTestCase.test_xslt_result_bytes"></a><div id="Py3XSLTTestCase.test_xslt_result_bytes-def"><a name="L1897"></a><tt class="py-lineno">1897</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="L1898"></a><tt class="py-lineno">1898</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-1128" 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-1130', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1899"></a><tt class="py-lineno">1899</tt>  <tt class="py-line">        <tt id="link-1131" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1131', '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-1132" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1128', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1899"></a><tt class="py-lineno">1899</tt>  <tt class="py-line">        <tt id="link-1129" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1129', '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-1130" 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-1132', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1130', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
 <a name="L1900"></a><tt class="py-lineno">1900</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
 <a name="L1901"></a><tt class="py-lineno">1901</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
 <a name="L1902"></a><tt class="py-lineno">1902</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
@@ -4266,35 +4251,35 @@ lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick
 <a name="L1905"></a><tt class="py-lineno">1905</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
 <a name="L1906"></a><tt class="py-lineno">1906</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
 <a name="L1907"></a><tt class="py-lineno">1907</tt>  <tt class="py-line"> </tt>
-<a name="L1908"></a><tt class="py-lineno">1908</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-1133" class="py-name"><a title="lxml.etree
+<a name="L1908"></a><tt class="py-lineno">1908</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-1131" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1133', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1134" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-1134', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-1135" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1135', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1131', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1132" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-1132', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-1133" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1133', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
 <a name="L1909"></a><tt class="py-lineno">1909</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="L1910"></a><tt class="py-lineno">1910</tt>  <tt class="py-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-1136" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1136', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1910"></a><tt class="py-lineno">1910</tt>  <tt class="py-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-1134" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1134', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
 <a name="L1911"></a><tt class="py-lineno">1911</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
 <a name="L1912"></a><tt class="py-lineno">1912</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
 <a name="L1913"></a><tt class="py-lineno">1913</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1914"></a><tt class="py-lineno">1914</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>
+<a name="L1914"></a><tt class="py-lineno">1914</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="L1915"></a><tt class="py-lineno">1915</tt>  <tt class="py-line"> </tt>
-<a name="Py3XSLTTestCase.test_xslt_result_memoryview"></a><div id="Py3XSLTTestCase.test_xslt_result_memoryview-def"><a name="L1916"></a><tt class="py-lineno">1916</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="L1917"></a><tt class="py-lineno">1917</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-1137" class="py-name"><a title="lxml.etree._ElementTree.parse
+<a name="Py3XSLTTestCase.test_xslt_result_bytearray"></a><div id="Py3XSLTTestCase.test_xslt_result_bytearray-def"><a name="L1916"></a><tt class="py-lineno">1916</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="L1917"></a><tt class="py-lineno">1917</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-1135" 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-1137', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1918"></a><tt class="py-lineno">1918</tt>  <tt class="py-line">        <tt id="link-1138" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1138', '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-1139" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1135', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1918"></a><tt class="py-lineno">1918</tt>  <tt class="py-line">        <tt id="link-1136" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1136', '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-1137" 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-1139', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1137', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
 <a name="L1919"></a><tt class="py-lineno">1919</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
 <a name="L1920"></a><tt class="py-lineno">1920</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
 <a name="L1921"></a><tt class="py-lineno">1921</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
@@ -4303,38 +4288,75 @@ lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick
 <a name="L1924"></a><tt class="py-lineno">1924</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
 <a name="L1925"></a><tt class="py-lineno">1925</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
 <a name="L1926"></a><tt class="py-lineno">1926</tt>  <tt class="py-line"> </tt>
-<a name="L1927"></a><tt class="py-lineno">1927</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-1140" class="py-name"><a title="lxml.etree
+<a name="L1927"></a><tt class="py-lineno">1927</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-1138" 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_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1140', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1141" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-1141', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-1142" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1142', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1138', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1139" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-1139', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-1140" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1140', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
 <a name="L1928"></a><tt class="py-lineno">1928</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="L1929"></a><tt class="py-lineno">1929</tt>  <tt class="py-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-1143" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1143', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1929"></a><tt class="py-lineno">1929</tt>  <tt class="py-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-1141" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1141', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
 <a name="L1930"></a><tt class="py-lineno">1930</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
 <a name="L1931"></a><tt class="py-lineno">1931</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
 <a name="L1932"></a><tt class="py-lineno">1932</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1933"></a><tt class="py-lineno">1933</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="L1934"></a><tt class="py-lineno">1934</tt>  <tt class="py-line"> </tt>
-<a name="L1935"></a><tt class="py-lineno">1935</tt>  <tt class="py-line"> </tt>
-<a name="test_suite"></a><div id="test_suite-def"><a name="L1936"></a><tt class="py-lineno">1936</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="L1937"></a><tt class="py-lineno">1937</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="L1938"></a><tt class="py-lineno">1938</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-1144" 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-1144', 'ETreeXSLTTestCase', 'link-1144');">ETreeXSLTTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1939"></a><tt class="py-lineno">1939</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-1145" 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-1145', 'ETreeEXSLTTestCase', 'link-1145');">ETreeEXSLTTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1940"></a><tt class="py-lineno">1940</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-1146" 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-1146', 'ETreeXSLTExtFuncTestCase', 'link-1146');">ETreeXSLTExtFuncTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1941"></a><tt class="py-lineno">1941</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-1147" 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-1147', 'ETreeXSLTExtElementTestCase', 'link-1147');">ETreeXSLTExtElementTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1942"></a><tt class="py-lineno">1942</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-1148" class="py-name"><a title="lxml.tests.test_xslt.is_python3" class="py-name" href="#" onclick="return doclink('link-1148', 'is_python3', 'link-9');">is_python3</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L1943"></a><tt class="py-lineno">1943</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-1149" 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-1149', 'Py3XSLTTestCase', 'link-1149');">Py3XSLTTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1944"></a><tt class="py-lineno">1944</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="L1945"></a><tt class="py-lineno">1945</tt>  <tt class="py-line">        <tt class="py-op">[</tt><tt id="link-1150" class="py-name"><a title="lxml.tests.common_imports.make_doctest" class="py-name" href="#" onclick="return doclink('link-1150', '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="L1946"></a><tt class="py-lineno">1946</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="L1947"></a><tt class="py-lineno">1947</tt>  <tt class="py-line">        <tt class="py-op">[</tt><tt id="link-1151" class="py-name"><a title="lxml.tests.common_imports.make_doctest" class="py-name" href="#" onclick="return doclink('link-1151', '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="L1948"></a><tt class="py-lineno">1948</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">suite</tt> </tt>
-</div><a name="L1949"></a><tt class="py-lineno">1949</tt>  <tt class="py-line"> </tt>
-<a name="L1950"></a><tt class="py-lineno">1950</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="L1951"></a><tt class="py-lineno">1951</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="L1952"></a><tt class="py-lineno">1952</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<a name="L1933"></a><tt class="py-lineno">1933</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="L1934"></a><tt class="py-lineno">1934</tt>  <tt class="py-line"> </tt>
+<a name="Py3XSLTTestCase.test_xslt_result_memoryview"></a><div id="Py3XSLTTestCase.test_xslt_result_memoryview-def"><a name="L1935"></a><tt class="py-lineno">1935</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="L1936"></a><tt class="py-lineno">1936</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-1142" 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-1142', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;&lt;c&gt;C&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1937"></a><tt class="py-lineno">1937</tt>  <tt class="py-line">        <tt id="link-1143" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1143', '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-1144" 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-1144', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1938"></a><tt class="py-lineno">1938</tt>  <tt class="py-line"><tt class="py-string">&lt;xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1939"></a><tt class="py-lineno">1939</tt>  <tt class="py-line"><tt class="py-string">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;</tt> </tt>
+<a name="L1940"></a><tt class="py-lineno">1940</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="*" /&gt;</tt> </tt>
+<a name="L1941"></a><tt class="py-lineno">1941</tt>  <tt class="py-line"><tt class="py-string">  &lt;xsl:template match="/"&gt;</tt> </tt>
+<a name="L1942"></a><tt class="py-lineno">1942</tt>  <tt class="py-line"><tt class="py-string">    &lt;foo&gt;&lt;xsl:value-of select="/a/b/text()" /&gt;&lt;/foo&gt;</tt> </tt>
+<a name="L1943"></a><tt class="py-lineno">1943</tt>  <tt class="py-line"><tt class="py-string">  &lt;/xsl:template&gt;</tt> </tt>
+<a name="L1944"></a><tt class="py-lineno">1944</tt>  <tt class="py-line"><tt class="py-string">&lt;/xsl:stylesheet&gt;'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1945"></a><tt class="py-lineno">1945</tt>  <tt class="py-line"> </tt>
+<a name="L1946"></a><tt class="py-lineno">1946</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-1145" 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_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1145', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1146" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-1146', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-1147" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1147', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1947"></a><tt class="py-lineno">1947</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="L1948"></a><tt class="py-lineno">1948</tt>  <tt class="py-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-1148" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1148', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1949"></a><tt class="py-lineno">1949</tt>  <tt class="py-line"><tt class="py-string">&lt;?xml version="1.0"?&gt;</tt> </tt>
+<a name="L1950"></a><tt class="py-lineno">1950</tt>  <tt class="py-line"><tt class="py-string">&lt;foo&gt;B&lt;/foo&gt;</tt> </tt>
+<a name="L1951"></a><tt class="py-lineno">1951</tt>  <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1952"></a><tt class="py-lineno">1952</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="L1953"></a><tt class="py-lineno">1953</tt>  <tt class="py-line"> </tt>
+<a name="L1954"></a><tt class="py-lineno">1954</tt>  <tt class="py-line"> </tt>
+<a name="test_suite"></a><div id="test_suite-def"><a name="L1955"></a><tt class="py-lineno">1955</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="L1956"></a><tt class="py-lineno">1956</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="L1957"></a><tt class="py-lineno">1957</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-1149" 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-1149', 'ETreeXSLTTestCase', 'link-1149');">ETreeXSLTTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1958"></a><tt class="py-lineno">1958</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-1150" 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-1150', 'ETreeEXSLTTestCase', 'link-1150');">ETreeEXSLTTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1959"></a><tt class="py-lineno">1959</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-1151" 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-1151', 'ETreeXSLTExtFuncTestCase', 'link-1151');">ETreeXSLTExtFuncTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1960"></a><tt class="py-lineno">1960</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-1152" 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-1152', 'ETreeXSLTExtElementTestCase', 'link-1152');">ETreeXSLTExtElementTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1961"></a><tt class="py-lineno">1961</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-1153" class="py-name"><a title="lxml.tests.test_xslt.is_python3" class="py-name" href="#" onclick="return doclink('link-1153', 'is_python3', 'link-9');">is_python3</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1962"></a><tt class="py-lineno">1962</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-1154" 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-1154', 'Py3XSLTTestCase', 'link-1154');">Py3XSLTTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1963"></a><tt class="py-lineno">1963</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="L1964"></a><tt class="py-lineno">1964</tt>  <tt class="py-line">        <tt class="py-op">[</tt><tt id="link-1155" class="py-name"><a title="lxml.tests.common_imports.make_doctest" class="py-name" href="#" onclick="return doclink('link-1155', '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="L1965"></a><tt class="py-lineno">1965</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="L1966"></a><tt class="py-lineno">1966</tt>  <tt class="py-line">        <tt class="py-op">[</tt><tt id="link-1156" class="py-name"><a title="lxml.tests.common_imports.make_doctest" class="py-name" href="#" onclick="return doclink('link-1156', '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="L1967"></a><tt class="py-lineno">1967</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">suite</tt> </tt>
+</div><a name="L1968"></a><tt class="py-lineno">1968</tt>  <tt class="py-line"> </tt>
+<a name="L1969"></a><tt class="py-lineno">1969</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="L1970"></a><tt class="py-lineno">1970</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="L1971"></a><tt class="py-lineno">1971</tt>  <tt class="py-line"> </tt><script type="text/javascript">
 <!--
 expandto(location.href);
 // -->
@@ -4372,7 +4394,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6e3af7ace4611a09d6f044564c1c9b2fbb9ccb0a..4b8cc2d3c91f3bd9d4a53a5a8ff693fade31f577 100644 (file)
@@ -502,7 +502,7 @@ EXSLT tests
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f86daa764c7ff8400b726b1013b108f43004b401..8edc0a56a30db7c22466da1335787f384ac84624 100644 (file)
@@ -582,7 +582,7 @@ Tests for extension elements in XSLT.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 093192feb35ce5bbca5d5f36a7ba2f34f6f73eb8..8ffbbc1fa8847a798107fa207700c09f118678d2 100644 (file)
@@ -406,7 +406,7 @@ Tests for XPath extension functions in XSLT.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e58fb9fb28ab5bb338314f2f41299f2a8d2fb5a1..1a3e96173116b088d009a0f08cb4d0730a905d9c 100644 (file)
@@ -1142,7 +1142,7 @@ XSLT tests etree
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a2bc1c9650c4daeea7692c7f6d51036f86cee4ad..c326f6e06f0acc772b7e022be835729af0a9ece8 100644 (file)
@@ -420,7 +420,7 @@ s': {}}&gt;
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5c835496ad115eb6c86ee5a87c984db0fe1e51c3..cdf8b678f7130a3f88150f73e68839837607e9d7 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0f4aa9609d8ac9a6af103d6feefbbf01b6a4deef..066857fd55b8171232452a7e4958a7296064e7d5 100644 (file)
@@ -112,7 +112,7 @@ 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 Thu Mar 17 15:04:26 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 48d45aef2261a2063ad237a982bf543209d11ee8..154b644290d7489d317d9e589678ca48cd5c9713 100644 (file)
@@ -363,7 +363,7 @@ contains some hooks for decoding encoded and multipart messages.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 055a54d98f145a0c69a2c29ad84bd31763132f78..c9a0a3c7c5ad45ff688bf96bc0324e875e742708 100644 (file)
@@ -158,7 +158,7 @@ namespace registry mechanism</em>    </li>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:23 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c27193d8963ef4e5f15ac93fa690d125edd1d0c4..e4e26edc46463b768c92cef0f73a37fa24692474 100644 (file)
@@ -1628,7 +1628,7 @@ arguments start and end are interpreted as in slice notation.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5e01d91c428f0c2ad6e99d35e6d6f24fbe700566..75f81ec34ef44bbe9eee9f6fef1dbe355626379c 100644 (file)
@@ -657,9 +657,9 @@ hash(x)
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="xml.etree.ElementTree-module.html#_serialize" class="summary-name" onclick="show_private();">_serialize</a> = <code title="{'html': &lt;function _serialize_html at 0x2ad9e91dae60&gt;,
- 'text': &lt;function _serialize_text at 0x2ad9e91daed8&gt;,
- 'xml': &lt;function _serialize_xml at 0x2ad9e91dade8&gt;}"><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>&lt;function _serialize_html at 0x2ad9e91da<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': &lt;function _serialize_html at 0x2b8b5eddce60&gt;,
+ 'text': &lt;function _serialize_text at 0x2b8b5eddced8&gt;,
+ 'xml': &lt;function _serialize_xml at 0x2b8b5eddcde8&gt;}"><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>&lt;function _serialize_html at 0x2b8b5eddc<code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 </table>
@@ -743,9 +743,9 @@ hash(x)
   <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>&lt;function _serialize_html at 0x2ad9e91dae60&gt;<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>&lt;function _serialize_text at 0x2ad9e91daed8&gt;<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>&lt;function _serialize_xml at 0x2ad9e91dade8&gt;<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>&lt;function _serialize_html at 0x2b8b5eddce60&gt;<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>&lt;function _serialize_text at 0x2b8b5eddced8&gt;<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>&lt;function _serialize_xml at 0x2b8b5eddcde8&gt;<code class="variable-group">}</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -783,7 +783,7 @@ hash(x)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:24 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4874472ef5b57270cb7d25c308d4a3d07655eba8..e2148cd1cdf9c456340aba61e36597df833f799d 100644 (file)
@@ -3132,7 +3132,7 @@ 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 Thu Mar 17 15:04:28 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c7e80fd0a3bc05e8b54006d9e5af49b00c2d27d4..3d1fe44e7f7f556abf61c9eff94b1440ef172eeb 100644 (file)
@@ -729,7 +729,7 @@ object --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c7ef6bd9e1f1c32f78ee34d04def4621929676fd..b1ca9c6ba5ae24bd9b2f2b163ea842f7ad1dec34 100644 (file)
@@ -423,7 +423,7 @@ object --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7e65f84dcc6de8b604b7731571aaf58f6ae62442..6441586c6fb5b146e2d06613c3f5df166ef133f1 100644 (file)
@@ -192,7 +192,7 @@ exceptions.BaseException --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 73ae0c47e27a34943618779bc3e25f3eeaba7a18..8155592b761a2b6eed49626be83e8fdd0efc6e02 100644 (file)
@@ -324,7 +324,7 @@ object --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a51bcce0f22f4f2dece8843d0bfd9518b40ccc2a..a6dbe6f56c66182ad965d6cc7913ab01316549c7 100644 (file)
@@ -309,7 +309,7 @@ object --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5a03ff68ce59e423e1862f5b7be072e7462a6177..6d16d8758e5dbb3a332125e84679869fa0c368de 100644 (file)
@@ -475,7 +475,7 @@ object --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d80464c0ec5041783f9c1901de05188d7875e03b..255ee66dfee8505e27cc92598985c3e1042daeb1 100644 (file)
@@ -263,7 +263,7 @@ object --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 743e2f7d98c8ab31d107145e6c6a431fe1db2b7f..63c5176792b8c81887c190746c1d0233da595eb3 100644 (file)
@@ -241,7 +241,7 @@ object --+
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Thu Mar 17 15:04:25 2016
+    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 750030201a8a4762d7e966a39fd63abea2f739e0..2146562ee1becb87319f249feca70efd9d222dfd 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>How to build lxml from source</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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
@@ -155,7 +171,7 @@ your operating system type (Linux, Windows, MacOS-X, ...).</p>
 </div>
 <div class="section" id="building-an-egg-or-wheel">
 <h1>Building an egg or wheel</h1>
-<p>This is the procedure to make an lxml egg or <a class="reference external" href="http://wheel.readthedocs.org/en/latest/">wheel</a> for your platform.
+<p>This is the procedure to make an lxml egg or <a class="reference external" href="https://wheel.readthedocs.io/en/latest/">wheel</a> for your platform.
 It assumes that you have <tt class="docutils literal">setuptools</tt> or <tt class="docutils literal">distribute</tt> installed, as well
 as the <tt class="docutils literal">wheel</tt> package.</p>
 <p>First, download the lxml-x.y.tar.gz release.  This contains the pregenerated
@@ -279,7 +295,7 @@ directory</li>
 increase the debian version number so apt/dpkg won't get confused</li>
 <li>run <tt class="docutils literal"><span class="pre">dpkg-buildpackage</span> <span class="pre">-rfakeroot</span> <span class="pre">-us</span> <span class="pre">-uc</span></tt> to build the package</li>
 </ul>
-<p>In case <tt class="docutils literal"><span class="pre">dpkg-buildpackage</span></tt> tells you that some dependecies are missing, you
+<p>In case <tt class="docutils literal"><span class="pre">dpkg-buildpackage</span></tt> tells you that some dependencies are missing, you
 can either install them manually or run <tt class="docutils literal"><span class="pre">apt-get</span> <span class="pre">build-dep</span> lxml</tt>.</p>
 <p>That will give you .deb packages in the parent directory which can be
 installed using <tt class="docutils literal">dpkg <span class="pre">-i</span></tt>.</p>
@@ -287,7 +303,7 @@ installed using <tt class="docutils literal">dpkg <span class="pre">-i</span></t
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 26e5ac9f528e2a267c9385c43755c6a8b4049204..e70918fdcd5e40906ec61e1d4dd17652833cbe89 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>The public C-API of lxml.etree</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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,
@@ -94,7 +110,7 @@ includes may not be sufficient.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
diff --git a/doc/html/changes-3.6.0.html b/doc/html/changes-3.6.0.html
deleted file mode 100644 (file)
index c24a52f..0000000
+++ /dev/null
@@ -1,3059 +0,0 @@
-<?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.6.0 (2016-03-17)</h1>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/189">GH#189</a>: Static builds honour FTP proxy configurations when downloading
-the external libs.  Patch by Youhei Sakurai.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/187">GH#187</a>: Now supports (only) version 5.x and later of PyPy.
-Patch by Armin Rigo.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/186">GH#186</a>: Soupparser failed to process entities in Python 3.x.
-Patch by Duncan Morris.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/185">GH#185</a>: Rare encoding related <cite>TypeError</cite> on import was fixed.
-Patch by Petr Demin.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/181">GH#181</a>: Direct support for <cite>.rnc</cite> files in <cite>RelaxNG()</cite> if <cite>rnc2rng</cite>
-is installed.  Patch by Dirkjan Ochtman.</li>
-</ul>
-</div>
-<div class="section" id="id2">
-<h1>3.5.0 (2015-11-13)</h1>
-<div class="section" id="bugs-fixed">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Unicode string results failed XPath queries in PyPy.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1497051">LP#1497051</a>: HTML target parser failed to terminate on exceptions
-and continued parsing instead.</li>
-<li>Deprecated API usage in doctestcompare.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="b1-2015-09-18">
-<h1>3.5.0b1 (2015-09-18)</h1>
-<div class="section" id="features-added">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">cleanup_namespaces()</tt> accepts a new argument <tt class="docutils literal">keep_ns_prefixes</tt>
-that does not remove definitions of the provided prefix-namespace
-mapping from the tree.</li>
-<li><tt class="docutils literal">cleanup_namespaces()</tt> accepts a new argument <tt class="docutils literal">top_nsmap</tt> that
-moves definitions of the provided prefix-namespace mapping to the
-top of the tree.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1490451">LP#1490451</a>: <tt class="docutils literal">Element</tt> objects gained a <tt class="docutils literal">cssselect()</tt> method as
-known from <tt class="docutils literal">lxml.html</tt>.  Patch by Simon Sapin.</li>
-<li>API functions and methods behave and look more like Python functions,
-which allows introspection on them etc.  One side effect to be aware of
-is that the functions now bind as methods when assigned to a class
-variable.  A quick fix is to wrap them in <tt class="docutils literal">staticmethod()</tt> (as for
-normal Python functions).</li>
-<li>ISO-Schematron support gained an option <tt class="docutils literal">error_finder</tt> that allows
-passing a filter function for picking validation errors from reports.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1243600">LP#1243600</a>: Elements in <tt class="docutils literal">lxml.html</tt> gained a <tt class="docutils literal">classes</tt> property
-that provides a set-like interface to the <tt class="docutils literal">class</tt> attribute.
-Original patch by masklinn.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1341964">LP#1341964</a>: The soupparser now handles DOCTYPE declarations, comments
-and processing instructions outside of the root element.
-Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421512">LP#1421512</a>: The <tt class="docutils literal">docinfo</tt> of a tree was made editable to allow
-setting and removing the public ID and system ID of the DOCTYPE.
-Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1442427">LP#1442427</a>: More work-arounds for quirks and bugs in pypy and pypy3.</li>
-<li><tt class="docutils literal">lxml.html.soupparser</tt> now uses BeautifulSoup version 4 instead
-of version 3 if available.</li>
-</ul>
-</div>
-<div class="section" id="id3">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory errors that occur during tree adaptations (e.g. moving subtrees
-to foreign documents) could leave the tree in a crash prone state.</li>
-<li>Calling <tt class="docutils literal">process_children()</tt> in an XSLT extension element without
-an <tt class="docutils literal">output_parent</tt> argument failed with a <tt class="docutils literal">TypeError</tt>.
-Fix by Jens Tröger.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/162">GH#162</a>: Image data in HTML <tt class="docutils literal">data</tt> URLs is considered safe and
-no longer removed by <tt class="docutils literal">lxml.html.clean</tt> JavaScript cleaner.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/166">GH#166</a>: Static build could link libraries in wrong order.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/172">GH#172</a>: Rely a bit more on libxml2 for encoding detection rather than
-rolling our own in some cases.  Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/159">GH#159</a>: Validity checks for names and string content were tightened
-to detect the use of illegal characters early.  Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421921">LP#1421921</a>: Comments/PIs before the DOCTYPE declaration were not
-serialised.  Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/659367">LP#659367</a>: Some HTML DOCTYPE declarations were not serialised.
-Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1238503">LP#1238503</a>: lxml.doctestcompare is now consistent with stdlib's doctest
-in how it uses <tt class="docutils literal">+</tt> and <tt class="docutils literal">-</tt> to refer to unexpected and missing output.</li>
-<li>Empty prefixes are explicitly rejected when a namespace mapping is used
-with ElementPath to avoid hiding bugs in user code.</li>
-<li>Several problems with PyPy were fixed by switching to Cython 0.23.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id4">
-<h1>3.4.4 (2015-04-25)</h1>
-<div class="section" id="id5">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>An ElementTree compatibility test added in lxml 3.4.3 that failed in
-Python 3.4+ was removed again.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id6">
-<h1>3.4.3 (2015-04-15)</h1>
-<div class="section" id="id7">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Expression cache in ElementPath was ignored.  Fix by Changaco.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1426868">LP#1426868</a>: Passing a default namespace and a prefixed namespace mapping
-as nsmap into <tt class="docutils literal">xmlfile.element()</tt> raised a <tt class="docutils literal">TypeError</tt>.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421927">LP#1421927</a>: DOCTYPE system URLs were incorrectly quoted when containing
-double quotes.  Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1419354">LP#1419354</a>: meta-redirect URLs were incorrectly processed by
-<tt class="docutils literal">iterlinks()</tt> if preceded by whitespace.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id8">
-<h1>3.4.2 (2015-02-07)</h1>
-<div class="section" id="id9">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1415907">LP#1415907</a>: Crash when creating an XMLSchema from a non-root element
-of an XML document.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1369362">LP#1369362</a>: HTML cleaning failed when hitting processing instructions
-with pseudo-attributes.</li>
-<li><tt class="docutils literal">CDATA()</tt> wrapped content was rejected for tail text.</li>
-<li>CDATA sections were not serialised as tail text of the top-level element.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id10">
-<h1>3.4.1 (2014-11-20)</h1>
-<div class="section" id="id11">
-<h2>Features added</h2>
-<ul class="simple">
-<li>New <tt class="docutils literal">htmlfile</tt> HTML generator to accompany the incremental <tt class="docutils literal">xmlfile</tt>
-serialisation API.  Patch by Burak Arslan.</li>
-</ul>
-</div>
-<div class="section" id="id12">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.sax.ElementTreeContentHandler</tt> did not initialise its superclass.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id13">
-<h1>3.4.0 (2014-09-10)</h1>
-<div class="section" id="id14">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">xmlfile(buffered=False)</tt> disables output buffering and flushes the
-content after each API operation (starting/ending element blocks or writes).
-A new method <tt class="docutils literal">xf.flush()</tt> can alternatively be used to explicitly flush
-the output.</li>
-<li><tt class="docutils literal">lxml.html.document_fromstring</tt> has a new option <tt class="docutils literal">ensure_head_body=True</tt>
-which will add an empty head and/or body element to the result document if
-missing.</li>
-<li><tt class="docutils literal">lxml.html.iterlinks</tt> now returns links inside meta refresh tags.</li>
-<li>New <tt class="docutils literal">XMLParser</tt> option <tt class="docutils literal">collect_ids=False</tt> to disable ID hash table
-creation.  This can substantially speed up parsing of documents with many
-different IDs that are not used.</li>
-<li>The parser uses per-document hash tables for XML IDs.  This reduces the
-load of the global parser dict and speeds up parsing for documents with
-many different IDs.</li>
-<li><tt class="docutils literal">ElementTree.getelementpath(element)</tt> returns a structural ElementPath
-expression for the given element, which can be used for lookups later.</li>
-<li><tt class="docutils literal">xmlfile()</tt> accepts a new argument <tt class="docutils literal">close=True</tt> to close file(-like)
-objects after writing to them.  Before, <tt class="docutils literal">xmlfile()</tt> only closed the file
-if it had opened it internally.</li>
-<li>Allow &quot;bytearray&quot; type for ASCII text input.</li>
-</ul>
-</div>
-<div class="section" id="id15">
-<h2>Bugs fixed</h2>
-</div>
-<div class="section" id="other-changes">
-<h2>Other changes</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/400588">LP#400588</a>: decoding errors have become hard errors even in recovery mode.
-Previously, they could lead to an internal tree representation in a mixed
-encoding state, which lead to very late errors or even silently incorrect
-behaviour during tree traversal or serialisation.</li>
-<li>Requires Python 2.6, 2.7, 3.2 or later. No longer supports
-Python 2.4, 2.5 and 3.1, use lxml 3.3.x for those.</li>
-<li>Requires libxml2 2.7.0 or later and libxslt 1.1.23 or later,
-use lxml 3.3.x with older versions.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id16">
-<h1>3.3.6 (2014-08-28)</h1>
-<div class="section" id="id17">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Prevent tree cycle creation when adding Elements as siblings.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1361948">LP#1361948</a>: crash when deallocating Element siblings without parent.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1354652">LP#1354652</a>: crash when traversing internally loaded documents in XSLT
-extension functions.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id18">
-<h1>3.3.5 (2014-04-18)</h1>
-<div class="section" id="id19">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>HTML cleaning could fail to strip javascript links that mix control
-characters into the link scheme.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id20">
-<h1>3.3.4 (2014-04-03)</h1>
-<div class="section" id="id21">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Source line numbers above 65535 are available on Elements when
-using libxml2 2.9 or later.</li>
-</ul>
-</div>
-<div class="section" id="id22">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.html.fragment_fromstring()</tt> failed for bytes input in Py3.</li>
-</ul>
-</div>
-<div class="section" id="id23">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id24">
-<h1>3.3.3 (2014-03-04)</h1>
-<div class="section" id="id25">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1287118">LP#1287118</a>: Crash when using Element subtypes with <tt class="docutils literal">__slots__</tt>.</li>
-</ul>
-</div>
-<div class="section" id="id26">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The internal classes <tt class="docutils literal">_LogEntry</tt> and <tt class="docutils literal">_Attrib</tt> can no longer be
-subclassed from Python code.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id27">
-<h1>3.3.2 (2014-02-26)</h1>
-<div class="section" id="id28">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The properties <tt class="docutils literal">resolvers</tt> and <tt class="docutils literal">version</tt>, as well as the methods
-<tt class="docutils literal">set_element_class_lookup()</tt> and <tt class="docutils literal">makeelement()</tt>, were lost from
-<tt class="docutils literal">iterparse</tt> objects in 3.3.0.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1222132">LP#1222132</a>: instances of <tt class="docutils literal">XMLSchema</tt>, <tt class="docutils literal">Schematron</tt> and <tt class="docutils literal">RelaxNG</tt>
-did not clear their local <tt class="docutils literal">error_log</tt> before running a validation.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1238500">LP#1238500</a>: lxml.doctestcompare mixed up &quot;expected&quot; and &quot;actual&quot; in
-attribute values.</li>
-<li>Some file I/O tests were failing in MS-Windows due to non-portable temp
-file usage.  Initial patch by Gabi Davar.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/910014">LP#910014</a>: duplicate IDs in a document were not reported by DTD validation.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1185332">LP#1185332</a>: <tt class="docutils literal"><span class="pre">tostring(method=&quot;html&quot;)</span></tt> did not use HTML serialisation
-semantics for trailing tail text.  Initial patch by Sylvain Viollon.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1281139">LP#1281139</a>: <tt class="docutils literal">.attrib</tt> value of Comments lost its mutation methods
-in 3.3.0.  Even though it is empty and immutable, it should still
-provide the same interface as that returned for Elements.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id29">
-<h1>3.3.1 (2014-02-12)</h1>
-<div class="section" id="id30">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id31">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1014290">LP#1014290</a>: HTML documents parsed with <tt class="docutils literal">parser.feed()</tt> failed to find
-elements during tag iteration.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1273709">LP#1273709</a>: Building in PyPy failed due to missing support for
-<tt class="docutils literal">PyUnicode_Compare()</tt> and <tt class="docutils literal"><span class="pre">PyByteArray_*()</span></tt> in PyPy's C-API.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1274413">LP#1274413</a>: Compilation in MSVC failed due to missing &quot;stdint.h&quot; standard
-header file.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1274118">LP#1274118</a>: iterparse() failed to parse BOM prefixed files.</li>
-</ul>
-</div>
-<div class="section" id="id32">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id33">
-<h1>3.3.0 (2014-01-26)</h1>
-<div class="section" id="id34">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id35">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The heuristic that distinguishes file paths from URLs was tightened
-to produce less false negatives.</li>
-</ul>
-</div>
-<div class="section" id="id36">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="beta5-2014-01-18">
-<h1>3.3.0beta5 (2014-01-18)</h1>
-<div class="section" id="id37">
-<h2>Features added</h2>
-<ul class="simple">
-<li>The PEP 393 unicode parsing support gained a fallback for wchar strings
-which might still be somewhat common on Windows systems.</li>
-</ul>
-</div>
-<div class="section" id="id38">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Several error handling problems were fixed throughout the code base that
-could previously lead to exceptions being silently swallowed or not
-properly reported.</li>
-<li>The C-API function <tt class="docutils literal">appendChild()</tt> is now deprecated as it does not
-propagate exceptions (its return type is <tt class="docutils literal">void</tt>).  The new function
-<tt class="docutils literal">appendChildToElement()</tt> was added as a safe replacement.</li>
-<li>Passing a string into <tt class="docutils literal">fromstringlist()</tt> raises an exception instead of
-parsing the string character by character.</li>
-</ul>
-</div>
-<div class="section" id="id39">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Document cleanup code was simplified using the new GC features in
-Cython 0.20.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta4-2014-01-12">
-<h1>3.3.0beta4 (2014-01-12)</h1>
-<div class="section" id="id40">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id41">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The (empty) value returned by the <tt class="docutils literal">attrib</tt> property of Entity and Comment
-objects was mutable.</li>
-<li>Element class lookup wasn't available for the new pull parsers or when using
-a custom parser target.</li>
-<li>Setting Element attributes on instantiation with both the <tt class="docutils literal">attrib</tt> argument
-and keyword arguments could modify the mapping passed as <tt class="docutils literal">attrib</tt>.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1266171">LP#1266171</a>: DTDs instantiated from internal/external subsets (i.e. through
-the docinfo property) lost their attribute declarations.</li>
-</ul>
-</div>
-<div class="section" id="id42">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Built with Cython 0.20pre (gitrev 012ae82eb) to prepare support for
-Python 3.4.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta3-2014-01-02">
-<h1>3.3.0beta3 (2014-01-02)</h1>
-<div class="section" id="id43">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Unicode string parsing was optimised for Python 3.3 (PEP 393).</li>
-</ul>
-</div>
-<div class="section" id="id44">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>HTML parsing of Unicode strings could misdecode the input on some platforms.</li>
-<li>Crash in xmlfile() when closing open elements out of order in an error case.</li>
-</ul>
-</div>
-<div class="section" id="id45">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="beta2-2013-12-20">
-<h1>3.3.0beta2 (2013-12-20)</h1>
-<div class="section" id="id46">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">iterparse()</tt> supports the <tt class="docutils literal">recover</tt> option.</li>
-</ul>
-</div>
-<div class="section" id="id47">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in <tt class="docutils literal">iterparse()</tt> for HTML parsing.</li>
-<li>Crash in target parsing with attributes.</li>
-</ul>
-</div>
-<div class="section" id="id48">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The safety check in the read-only tree implementation (e.g. used by
-<tt class="docutils literal">PythonElementClassLookup</tt>) raises a more appropriate <tt class="docutils literal">ReferenceError</tt>
-for illegal access after tree disposal instead of an <tt class="docutils literal">AssertionError</tt>.
-This should only impact test code that specifically checks the original
-behaviour.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta1-2013-12-12">
-<h1>3.3.0beta1 (2013-12-12)</h1>
-<div class="section" id="id49">
-<h2>Features added</h2>
-<ul class="simple">
-<li>New option <tt class="docutils literal">handle_failures</tt> in <tt class="docutils literal">make_links_absolute()</tt> and
-<tt class="docutils literal">resolve_base_href()</tt> (lxml.html) that enables ignoring or
-discarding links that fail to parse as URLs.</li>
-<li>New parser classes <tt class="docutils literal">XMLPullParser</tt> and <tt class="docutils literal">HTMLPullParser</tt> for
-incremental parsing, as implemented for ElementTree in Python 3.4.</li>
-<li><tt class="docutils literal">iterparse()</tt> enables recovery mode by default for HTML parsing
-(<tt class="docutils literal">html=True</tt>).</li>
-</ul>
-</div>
-<div class="section" id="id50">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1255132">LP#1255132</a>: crash when trying to run validation over non-Element (e.g.
-comment or PI).</li>
-<li>Error messages in the log and in exception messages that originated
-from libxml2 could accidentally be picked up from preceding warnings
-instead of the actual error.</li>
-<li>The <tt class="docutils literal">ElementMaker</tt> in lxml.objectify did not accept a dict as
-argument for adding attributes to the element it's building. This
-works as in lxml.builder now.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1228881">LP#1228881</a>: <tt class="docutils literal">repr(XSLTAccessControl)</tt> failed in Python 3.</li>
-<li>Raise <tt class="docutils literal">ValueError</tt> when trying to append an Element to itself or
-to one of its own descendants, instead of running into an infinite
-loop.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1206077">LP#1206077</a>: htmldiff discarded whitespace from the output.</li>
-<li>Compressed plain-text serialisation to file-like objects was broken.</li>
-<li>lxml.html.formfill: Fix textarea form filling.
-The textarea used to be cleared before the new content was set,
-which removed the name attribute.</li>
-</ul>
-</div>
-<div class="section" id="id51">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Some basic API classes use freelists internally for faster
-instantiation.  This can speed up some <tt class="docutils literal">iterparse()</tt> scenarios,
-for example.</li>
-<li><tt class="docutils literal">iterparse()</tt> was rewritten to use the new <tt class="docutils literal">*PullParser</tt>
-classes internally instead of being a parser itself.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id52">
-<h1>3.2.5 (2014-01-02)</h1>
-<div class="section" id="id53">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id54">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in xmlfile() when closing open elements out of order in an error case.</li>
-<li>Crash in target parsing with attributes.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1255132">LP#1255132</a>: crash when trying to run validation over non-Element (e.g.
-comment or PI).</li>
-</ul>
-</div>
-<div class="section" id="id56">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id57">
-<h1>3.2.4 (2013-11-07)</h1>
-<div class="section" id="id58">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id59">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory leak when creating an XPath evaluator in a thread.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1228881">LP#1228881</a>: <tt class="docutils literal">repr(XSLTAccessControl)</tt> failed in Python 3.</li>
-<li>Raise <tt class="docutils literal">ValueError</tt> when trying to append an Element to itself or
-to one of its own descendants.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1206077">LP#1206077</a>: htmldiff discarded whitespace from the output.</li>
-<li>Compressed plain-text serialisation to file-like objects was broken.</li>
-</ul>
-</div>
-<div class="section" id="id62">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id63">
-<h1>3.2.3 (2013-07-28)</h1>
-<div class="section" id="id64">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fix support for Python 2.4 which was lost in 3.2.2.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id65">
-<h1>3.2.2 (2013-07-28)</h1>
-<div class="section" id="id66">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id67">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1185701">LP#1185701</a>: spurious XMLSyntaxError after finishing iterparse().</li>
-<li>Crash in lxml.objectify during xsi annotation.</li>
-</ul>
-</div>
-<div class="section" id="id68">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Return values of user provided element class lookup methods are now
-validated against the type of the XML node they represent to prevent
-API class mismatches.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id69">
-<h1>3.2.1 (2013-05-11)</h1>
-<div class="section" id="id70">
-<h2>Features added</h2>
-<ul class="simple">
-<li>The methods <tt class="docutils literal">apply_templates()</tt> and <tt class="docutils literal">process_children()</tt> of XSLT
-extension elements have gained two new boolean options <tt class="docutils literal">elements_only</tt>
-and <tt class="docutils literal">remove_blank_text</tt> that discard either all strings or whitespace-only
-strings from the result list.</li>
-</ul>
-</div>
-<div class="section" id="id71">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>When moving Elements to another tree, the namespace cleanup mechanism
-no longer drops namespace prefixes from attributes for which it finds
-a default namespace declaration, to prevent them from appearing as
-unnamespaced attributes after serialisation.</li>
-<li>Returning non-type objects from a custom class lookup method could lead
-to a crash.</li>
-<li>Instantiating and using subtypes of Comments and ProcessingInstructions
-crashed.</li>
-</ul>
-</div>
-<div class="section" id="id72">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id73">
-<h1>3.2.0 (2013-04-28)</h1>
-<div class="section" id="id74">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id75">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/690319">LP#690319</a>: Leading whitespace could change the behaviour of the string
-parsing functions in <tt class="docutils literal">lxml.html</tt>.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/599318">LP#599318</a>: The string parsing functions in <tt class="docutils literal">lxml.html</tt> are more robust
-in the face of uncommon HTML content like framesets or missing body tags.
-Patch by Stefan Seelmann.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/712941">LP#712941</a>: I/O errors while trying to access files with paths that contain
-non-ASCII characters could raise <tt class="docutils literal">UnicodeDecodeError</tt> instead of properly
-reporting the <tt class="docutils literal">IOError</tt>.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/673205">LP#673205</a>: Parsing from in-memory strings disabled network access in the
-default parser and made subsequent attempts to parse from a URL fail.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/971754">LP#971754</a>: lxml.html.clean appends 'nofollow' to 'rel' attributes instead
-of overwriting the current value.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/715687">LP#715687</a>: lxml.html.clean no longer discards scripts that are explicitly
-allowed by the user provided whitelist.  Patch by Christine Koppelt.</li>
-</ul>
-</div>
-<div class="section" id="id76">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id77">
-<h1>3.1.2 (2013-04-12)</h1>
-<div class="section" id="id78">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id79">
-<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="id80">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id81">
-<h1>3.1.1 (2013-03-29)</h1>
-<div class="section" id="id82">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id83">
-<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="id84">
-<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="id85">
-<h1>3.1.0 (2013-02-10)</h1>
-<div class="section" id="id86">
-<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="id87">
-<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="id88">
-<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="id89">
-<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="id90">
-<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="id91">
-<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="id92">
-<h1>3.0.2 (2012-12-14)</h1>
-<div class="section" id="id93">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id94">
-<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="id95">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id96">
-<h1>3.0.1 (2012-10-14)</h1>
-<div class="section" id="id97">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id98">
-<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="id99">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id100">
-<h1>3.0 (2012-10-08)</h1>
-<div class="section" id="id101">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id102">
-<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="id103">
-<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 &quot;--with-cython&quot;.  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
-&quot;--without-cython&quot;.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta1-2012-09-26">
-<h1>3.0beta1 (2012-09-26)</h1>
-<div class="section" id="id104">
-<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="id105">
-<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="id106">
-<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="id107">
-<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">&quot;{*}name&quot;</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">&quot;{ns}name&quot;</tt>, <tt class="docutils literal"><span class="pre">&quot;{}name&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;{*}name&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;{ns}*&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;{}*&quot;</span></tt>
-and <tt class="docutils literal"><span class="pre">&quot;{*}*&quot;</span></tt>.  Note that <tt class="docutils literal">&quot;name&quot;</tt> is equivalent to <tt class="docutils literal"><span class="pre">&quot;{}name&quot;</span></tt>,
-but <tt class="docutils literal">&quot;*&quot;</tt> is <tt class="docutils literal"><span class="pre">&quot;{*}*&quot;</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="id108">
-<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="id109">
-<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="id110">
-<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="id111">
-<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="id112">
-<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 &quot;lxml.cssselect&quot; was moved into a separate PyPI
-package called &quot;cssselect&quot;.  To continue using it, you must install
-that package separately.  The &quot;lxml.cssselect&quot; module is still
-available and provides the same interface, provided the &quot;cssselect&quot;
-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="id113">
-<h1>2.3.6 (2012-09-28)</h1>
-<div class="section" id="id114">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id115">
-<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="id116">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id117">
-<h1>2.3.5 (2012-07-31)</h1>
-<div class="section" id="id118">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id119">
-<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="id120">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id121">
-<h1>2.3.4 (2012-03-26)</h1>
-<div class="section" id="id122">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id123">
-<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="id124">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id125">
-<h1>2.3.3 (2012-01-04)</h1>
-<div class="section" id="id126">
-<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="id127">
-<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.
-&quot;E :pseudo&quot; should parse the same as &quot;E *:pseudo&quot;, not &quot;E:pseudo&quot;.
-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="id128">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id129">
-<h1>2.3.2 (2011-11-11)</h1>
-<div class="section" id="id130">
-<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="id131">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fixed the &quot;descendant&quot; 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
-&quot;&gt;&quot;, &quot;+&quot; and &quot;~&quot; is now correctly ignored. Previously is was parsed as
-a descendant combinator. For example, &quot;div&gt; .foo&quot; was parsed the same as
-&quot;div&gt;* .foo&quot; instead of &quot;div&gt;.foo&quot;. Patch by Simon Sapin.</li>
-</ul>
-</div>
-<div class="section" id="id132">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id133">
-<h1>2.3.1 (2011-09-25)</h1>
-<div class="section" id="id134">
-<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="id135">
-<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">&quot;div <span class="pre">*:last-child&quot;</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">&lt;option&gt;</tt> tags no longer show up in the
-collected form values.</li>
-<li>Adding/removing <tt class="docutils literal">&lt;option&gt;</tt> values to/from a multiple select form
-field properly selects them and unselects them.</li>
-</ul>
-</div>
-<div class="section" id="id136">
-<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="id137">
-<h1>2.3 (2011-02-06)</h1>
-<div class="section" id="id138">
-<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="id139">
-<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 severely 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="id140">
-<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="id141">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id142">
-<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="id143">
-<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="id144">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id145">
-<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="id146">
-<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="id147">
-<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="id148">
-<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 '&lt;/div&gt;' 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=&quot;val&quot;]</span></tt> and
-<tt class="docutils literal">x <span class="pre">[attr=&quot;val&quot;]</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="id149">
-<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="id150">
-<h1>2.2.8 (2010-09-02)</h1>
-<div class="section" id="id151">
-<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="id152">
-<h1>2.2.7 (2010-07-24)</h1>
-<div class="section" id="id153">
-<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="id154">
-<h1>2.2.6 (2010-03-02)</h1>
-<div class="section" id="id155">
-<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="id156">
-<h1>2.2.5 (2010-02-28)</h1>
-<div class="section" id="id157">
-<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 &quot;/&quot;).</li>
-</ul>
-</div>
-<div class="section" id="id158">
-<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="id159">
-<h1>2.2.4 (2009-11-11)</h1>
-<div class="section" id="id160">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Static build of libxml2/libxslt was broken.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id161">
-<h1>2.2.3 (2009-10-30)</h1>
-<div class="section" id="id162">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id163">
-<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 honour 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="id164">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id165">
-<h1>2.2.2 (2009-06-21)</h1>
-<div class="section" id="id166">
-<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="id167">
-<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 &lt;= 2.0
-behaviour.</li>
-</ul>
-</div>
-<div class="section" id="id168">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id169">
-<h1>2.2.1 (2009-06-02)</h1>
-<div class="section" id="id170">
-<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="id171">
-<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="id172">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id173">
-<h1>2.2 (2009-03-21)</h1>
-<div class="section" id="id174">
-<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="id175">
-<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="id176">
-<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="id177">
-<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="id178">
-<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="id179">
-<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="id180">
-<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="id181">
-<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="id182">
-<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(&quot;link&quot;)</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="id183">
-<h1>2.1.5 (2009-01-06)</h1>
-<div class="section" id="id184">
-<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="id185">
-<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="id186">
-<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="id187">
-<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="id188">
-<h1>2.1.4 (2008-12-12)</h1>
-<div class="section" id="id189">
-<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="id190">
-<h1>2.0.11 (2008-12-12)</h1>
-<div class="section" id="id191">
-<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="id192">
-<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="id193">
-<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="id194">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id195">
-<h1>2.1.3 (2008-11-17)</h1>
-<div class="section" id="id196">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id197">
-<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="id198">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id199">
-<h1>2.0.10 (2008-11-17)</h1>
-<div class="section" id="id200">
-<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="id201">
-<h1>2.1.2 (2008-09-05)</h1>
-<div class="section" id="id202">
-<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="id203">
-<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="id204">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id205">
-<h1>2.0.9 (2008-09-05)</h1>
-<div class="section" id="id206">
-<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="id207">
-<h1>2.1.1 (2008-07-24)</h1>
-<div class="section" id="id208">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id209">
-<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="id210">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id211">
-<h1>2.0.8 (2008-07-24)</h1>
-<div class="section" id="id212">
-<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="id213">
-<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="id214">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id215">
-<h1>2.1 (2008-07-09)</h1>
-<div class="section" id="id216">
-<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="id217">
-<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="id218">
-<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="id219">
-<h1>2.0.7 (2008-06-20)</h1>
-<div class="section" id="id220">
-<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="id221">
-<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="id222">
-<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="id223">
-<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="id224">
-<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 &quot;flat_namespace&quot; 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="id225">
-<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="id226">
-<h1>2.0.6 (2008-05-31)</h1>
-<div class="section" id="id227">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id228">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Incorrect evaluation of <tt class="docutils literal"><span class="pre">el.find(&quot;tag[child]&quot;)</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="id229">
-<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="id230">
-<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="id231">
-<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="id232">
-<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="id233">
-<h1>2.0.5 (2008-05-01)</h1>
-<div class="section" id="id234">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id235">
-<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 &quot;STOPPED&quot;, which
-let some XSLT errors pass silently.</li>
-<li>Memory leak in Schematron with libxml2 &gt;= 2.6.31.</li>
-</ul>
-</div>
-<div class="section" id="id236">
-<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="id237">
-<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="id238">
-<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 &quot;STOPPED&quot;, which
-let some XSLT errors pass silently.</li>
-<li>Memory leak in Schematron with libxml2 &gt;= 2.6.31.</li>
-<li>lxml.etree accepted non well-formed namespace prefix names.</li>
-</ul>
-</div>
-<div class="section" id="id239">
-<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="id240">
-<h1>2.0.4 (2008-04-13)</h1>
-<div class="section" id="id241">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id242">
-<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="id243">
-<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="id244">
-<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="id245">
-<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="id246">
-<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="id247">
-<h1>2.0.3 (2008-03-26)</h1>
-<div class="section" id="id248">
-<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="id249">
-<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">&lt;br&gt;</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="id250">
-<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="id251">
-<h1>2.0.2 (2008-02-22)</h1>
-<div class="section" id="id252">
-<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="id253">
-<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="id254">
-<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=&quot;xml&quot;</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="id255">
-<h1>2.0.1 (2008-02-13)</h1>
-<div class="section" id="id256">
-<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="id257">
-<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="id258">
-<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="id259">
-<h1>2.0 (2008-02-01)</h1>
-<div class="section" id="id260">
-<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;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="id261">
-<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">&lt;object&gt;</tt>
-tags weren't recognized.  (Note: plugin-specific link parameters
-still aren't recognized.)  Also, the <tt class="docutils literal">&lt;embed&gt;</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">&lt;tag <span class="pre">xmlns=&quot;...&quot;&gt;</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="id262">
-<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 &quot;lxml.*.pyx&quot;, such as
-&quot;lxml.etree.pyx&quot;.  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">&lt;&gt;&amp;/&quot;'</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 losing 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 &quot;NoneType&quot;</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="id263">
-<h1>1.3.6 (2007-10-29)</h1>
-<div class="section" id="id264">
-<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="id265">
-<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="id266">
-<h1>1.3.5 (2007-10-22)</h1>
-<div class="section" id="id267">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id268">
-<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="id269">
-<h1>1.3.4 (2007-08-30)</h1>
-<div class="section" id="id270">
-<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="id271">
-<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="id272">
-<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="id273">
-<h1>1.3.3 (2007-07-26)</h1>
-<div class="section" id="id274">
-<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="id275">
-<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="id276">
-<h1>1.3.2 (2007-07-03)</h1>
-<div class="section" id="id277">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id278">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>&quot;deallocating None&quot; crash bug</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id279">
-<h1>1.3.1 (2007-07-02)</h1>
-<div class="section" id="id280">
-<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="id281">
-<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="id282">
-<h1>1.3 (2007-06-24)</h1>
-<div class="section" id="id283">
-<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="id284">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Removing Elements from a tree could make them lose 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="id285">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>major restructuring in the documentation</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id286">
-<h1>1.2.1 (2007-02-27)</h1>
-<div class="section" id="id287">
-<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[&quot;text&quot;]</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="id288">
-<h1>1.2 (2007-02-20)</h1>
-<div class="section" id="id289">
-<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="id290">
-<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 &lt;= 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="id291">
-<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 compatibility of the public C-API</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id292">
-<h1>1.1.2 (2006-10-30)</h1>
-<div class="section" id="id293">
-<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="id294">
-<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="id295">
-<h1>1.1.1 (2006-09-21)</h1>
-<div class="section" id="id296">
-<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="id297">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>lxml.objectify failed to support long data values (e.g., &quot;123L&quot;)</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="id298">
-<h1>1.1 (2006-09-13)</h1>
-<div class="section" id="id299">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Comments and processing instructions return '&lt;!-- comment --&gt;' and
-'&lt;?pi-target content?&gt;' 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 &quot;/&quot; 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="id300">
-<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="id301">
-<h1>1.0.4 (2006-09-09)</h1>
-<div class="section" id="id302">
-<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="id303">
-<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="id304">
-<h1>1.0.3 (2006-08-08)</h1>
-<div class="section" id="id305">
-<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="id306">
-<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="id307">
-<h1>1.0.2 (2006-06-27)</h1>
-<div class="section" id="id308">
-<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="id309">
-<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="id310">
-<h1>1.0.1 (2006-06-09)</h1>
-<div class="section" id="id311">
-<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="id312">
-<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 lose 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="id313">
-<h1>1.0 (2006-06-01)</h1>
-<div class="section" id="id314">
-<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 &quot;xslt.pxi&quot;</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="id315">
-<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' -&gt; '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 &lt;= 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="id316">
-<h1>0.9.2 (2006-05-10)</h1>
-<div class="section" id="id317">
-<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="id318">
-<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="id319">
-<h1>0.9.1 (2006-03-30)</h1>
-<div class="section" id="id320">
-<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="id321">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory deallocation bug when using XSLT output method &quot;html&quot;</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="id322">
-<h1>0.9 (2006-03-20)</h1>
-<div class="section" id="id323">
-<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="id324">
-<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="id325">
-<h1>0.8 (2005-11-03)</h1>
-<div class="section" id="id326">
-<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="id327">
-<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="id328">
-<h1>0.7 (2005-06-15)</h1>
-<div class="section" id="id329">
-<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="id330">
-<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="id331">
-<h1>0.6 (2005-05-14)</h1>
-<div class="section" id="id332">
-<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="id333">
-<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="id334">
-<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="id335">
-<h1>0.5 (2005-04-08)</h1>
-<p>Initial public release.</p>
-</div>
-</div>
-<div class="footer">
-<hr class="footer" />
-Generated on: 2016-03-17.
-
-</div>
-</body>
-</html>
diff --git a/doc/html/changes-3.6.1.html b/doc/html/changes-3.6.1.html
new file mode 100644 (file)
index 0000000..70d6137
--- /dev/null
@@ -0,0 +1,3090 @@
+<?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.6.1 (2016-07-24)</h1>
+<div class="section" id="features-added">
+<h2>Features added</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/180">GH#180</a>: Separate option <tt class="docutils literal">inline_style</tt> for Cleaner that only removes <tt class="docutils literal">style</tt>
+attributes instead of all styles.  Patch by Christian Pedersen.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/196">GH#196</a>: Windows build support for Python 3.5.  Contribution by Maximilian Hils.</li>
+</ul>
+</div>
+<div class="section" id="bugs-fixed">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/199">GH#199</a>: Exclude <tt class="docutils literal">file</tt> fields from <tt class="docutils literal">FormElement.form_values</tt> (as browsers do).
+Patch by Tomas Divis.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/198">GH#198</a>, <a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1568167">LP#1568167</a>: Try to provide base URL from <tt class="docutils literal">Resolver.resolve_string()</tt>.
+Patch by Michael van Tellingen.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/191">GH#191</a>: More accurate float serialisation in <tt class="docutils literal">objectify.FloatElement</tt>.
+Patch by Holger Joukl.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1551797">LP#1551797</a>: Repair XSLT error logging. Patch by Marcus Brinkmann.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id2">
+<h1>3.6.0 (2016-03-17)</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/187">GH#187</a>: Now supports (only) version 5.x and later of PyPy.
+Patch by Armin Rigo.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/181">GH#181</a>: Direct support for <tt class="docutils literal">.rnc</tt> files in <cite>RelaxNG()</cite> if <tt class="docutils literal">rnc2rng</tt>
+is installed.  Patch by Dirkjan Ochtman.</li>
+</ul>
+</div>
+<div class="section" id="id4">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/189">GH#189</a>: Static builds honour FTP proxy configurations when downloading
+the external libs.  Patch by Youhei Sakurai.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/186">GH#186</a>: Soupparser failed to process entities in Python 3.x.
+Patch by Duncan Morris.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/185">GH#185</a>: Rare encoding related <tt class="docutils literal">TypeError</tt> on import was fixed.
+Patch by Petr Demin.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id5">
+<h1>3.5.0 (2015-11-13)</h1>
+<div class="section" id="id6">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Unicode string results failed XPath queries in PyPy.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1497051">LP#1497051</a>: HTML target parser failed to terminate on exceptions
+and continued parsing instead.</li>
+<li>Deprecated API usage in doctestcompare.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="b1-2015-09-18">
+<h1>3.5.0b1 (2015-09-18)</h1>
+<div class="section" id="id7">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">cleanup_namespaces()</tt> accepts a new argument <tt class="docutils literal">keep_ns_prefixes</tt>
+that does not remove definitions of the provided prefix-namespace
+mapping from the tree.</li>
+<li><tt class="docutils literal">cleanup_namespaces()</tt> accepts a new argument <tt class="docutils literal">top_nsmap</tt> that
+moves definitions of the provided prefix-namespace mapping to the
+top of the tree.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1490451">LP#1490451</a>: <tt class="docutils literal">Element</tt> objects gained a <tt class="docutils literal">cssselect()</tt> method as
+known from <tt class="docutils literal">lxml.html</tt>.  Patch by Simon Sapin.</li>
+<li>API functions and methods behave and look more like Python functions,
+which allows introspection on them etc.  One side effect to be aware of
+is that the functions now bind as methods when assigned to a class
+variable.  A quick fix is to wrap them in <tt class="docutils literal">staticmethod()</tt> (as for
+normal Python functions).</li>
+<li>ISO-Schematron support gained an option <tt class="docutils literal">error_finder</tt> that allows
+passing a filter function for picking validation errors from reports.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1243600">LP#1243600</a>: Elements in <tt class="docutils literal">lxml.html</tt> gained a <tt class="docutils literal">classes</tt> property
+that provides a set-like interface to the <tt class="docutils literal">class</tt> attribute.
+Original patch by masklinn.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1341964">LP#1341964</a>: The soupparser now handles DOCTYPE declarations, comments
+and processing instructions outside of the root element.
+Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421512">LP#1421512</a>: The <tt class="docutils literal">docinfo</tt> of a tree was made editable to allow
+setting and removing the public ID and system ID of the DOCTYPE.
+Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1442427">LP#1442427</a>: More work-arounds for quirks and bugs in pypy and pypy3.</li>
+<li><tt class="docutils literal">lxml.html.soupparser</tt> now uses BeautifulSoup version 4 instead
+of version 3 if available.</li>
+</ul>
+</div>
+<div class="section" id="id8">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory errors that occur during tree adaptations (e.g. moving subtrees
+to foreign documents) could leave the tree in a crash prone state.</li>
+<li>Calling <tt class="docutils literal">process_children()</tt> in an XSLT extension element without
+an <tt class="docutils literal">output_parent</tt> argument failed with a <tt class="docutils literal">TypeError</tt>.
+Fix by Jens Tröger.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/162">GH#162</a>: Image data in HTML <tt class="docutils literal">data</tt> URLs is considered safe and
+no longer removed by <tt class="docutils literal">lxml.html.clean</tt> JavaScript cleaner.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/166">GH#166</a>: Static build could link libraries in wrong order.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/172">GH#172</a>: Rely a bit more on libxml2 for encoding detection rather than
+rolling our own in some cases.  Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/159">GH#159</a>: Validity checks for names and string content were tightened
+to detect the use of illegal characters early.  Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421921">LP#1421921</a>: Comments/PIs before the DOCTYPE declaration were not
+serialised.  Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/659367">LP#659367</a>: Some HTML DOCTYPE declarations were not serialised.
+Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1238503">LP#1238503</a>: lxml.doctestcompare is now consistent with stdlib's doctest
+in how it uses <tt class="docutils literal">+</tt> and <tt class="docutils literal">-</tt> to refer to unexpected and missing output.</li>
+<li>Empty prefixes are explicitly rejected when a namespace mapping is used
+with ElementPath to avoid hiding bugs in user code.</li>
+<li>Several problems with PyPy were fixed by switching to Cython 0.23.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id9">
+<h1>3.4.4 (2015-04-25)</h1>
+<div class="section" id="id10">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>An ElementTree compatibility test added in lxml 3.4.3 that failed in
+Python 3.4+ was removed again.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id11">
+<h1>3.4.3 (2015-04-15)</h1>
+<div class="section" id="id12">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Expression cache in ElementPath was ignored.  Fix by Changaco.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1426868">LP#1426868</a>: Passing a default namespace and a prefixed namespace mapping
+as nsmap into <tt class="docutils literal">xmlfile.element()</tt> raised a <tt class="docutils literal">TypeError</tt>.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421927">LP#1421927</a>: DOCTYPE system URLs were incorrectly quoted when containing
+double quotes.  Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1419354">LP#1419354</a>: meta-redirect URLs were incorrectly processed by
+<tt class="docutils literal">iterlinks()</tt> if preceded by whitespace.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id13">
+<h1>3.4.2 (2015-02-07)</h1>
+<div class="section" id="id14">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1415907">LP#1415907</a>: Crash when creating an XMLSchema from a non-root element
+of an XML document.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1369362">LP#1369362</a>: HTML cleaning failed when hitting processing instructions
+with pseudo-attributes.</li>
+<li><tt class="docutils literal">CDATA()</tt> wrapped content was rejected for tail text.</li>
+<li>CDATA sections were not serialised as tail text of the top-level element.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id15">
+<h1>3.4.1 (2014-11-20)</h1>
+<div class="section" id="id16">
+<h2>Features added</h2>
+<ul class="simple">
+<li>New <tt class="docutils literal">htmlfile</tt> HTML generator to accompany the incremental <tt class="docutils literal">xmlfile</tt>
+serialisation API.  Patch by Burak Arslan.</li>
+</ul>
+</div>
+<div class="section" id="id17">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><tt class="docutils literal">lxml.sax.ElementTreeContentHandler</tt> did not initialise its superclass.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id18">
+<h1>3.4.0 (2014-09-10)</h1>
+<div class="section" id="id19">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">xmlfile(buffered=False)</tt> disables output buffering and flushes the
+content after each API operation (starting/ending element blocks or writes).
+A new method <tt class="docutils literal">xf.flush()</tt> can alternatively be used to explicitly flush
+the output.</li>
+<li><tt class="docutils literal">lxml.html.document_fromstring</tt> has a new option <tt class="docutils literal">ensure_head_body=True</tt>
+which will add an empty head and/or body element to the result document if
+missing.</li>
+<li><tt class="docutils literal">lxml.html.iterlinks</tt> now returns links inside meta refresh tags.</li>
+<li>New <tt class="docutils literal">XMLParser</tt> option <tt class="docutils literal">collect_ids=False</tt> to disable ID hash table
+creation.  This can substantially speed up parsing of documents with many
+different IDs that are not used.</li>
+<li>The parser uses per-document hash tables for XML IDs.  This reduces the
+load of the global parser dict and speeds up parsing for documents with
+many different IDs.</li>
+<li><tt class="docutils literal">ElementTree.getelementpath(element)</tt> returns a structural ElementPath
+expression for the given element, which can be used for lookups later.</li>
+<li><tt class="docutils literal">xmlfile()</tt> accepts a new argument <tt class="docutils literal">close=True</tt> to close file(-like)
+objects after writing to them.  Before, <tt class="docutils literal">xmlfile()</tt> only closed the file
+if it had opened it internally.</li>
+<li>Allow &quot;bytearray&quot; type for ASCII text input.</li>
+</ul>
+</div>
+<div class="section" id="id20">
+<h2>Bugs fixed</h2>
+</div>
+<div class="section" id="other-changes">
+<h2>Other changes</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/400588">LP#400588</a>: decoding errors have become hard errors even in recovery mode.
+Previously, they could lead to an internal tree representation in a mixed
+encoding state, which lead to very late errors or even silently incorrect
+behaviour during tree traversal or serialisation.</li>
+<li>Requires Python 2.6, 2.7, 3.2 or later. No longer supports
+Python 2.4, 2.5 and 3.1, use lxml 3.3.x for those.</li>
+<li>Requires libxml2 2.7.0 or later and libxslt 1.1.23 or later,
+use lxml 3.3.x with older versions.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id21">
+<h1>3.3.6 (2014-08-28)</h1>
+<div class="section" id="id22">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Prevent tree cycle creation when adding Elements as siblings.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1361948">LP#1361948</a>: crash when deallocating Element siblings without parent.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1354652">LP#1354652</a>: crash when traversing internally loaded documents in XSLT
+extension functions.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id23">
+<h1>3.3.5 (2014-04-18)</h1>
+<div class="section" id="id24">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>HTML cleaning could fail to strip javascript links that mix control
+characters into the link scheme.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id25">
+<h1>3.3.4 (2014-04-03)</h1>
+<div class="section" id="id26">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Source line numbers above 65535 are available on Elements when
+using libxml2 2.9 or later.</li>
+</ul>
+</div>
+<div class="section" id="id27">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><tt class="docutils literal">lxml.html.fragment_fromstring()</tt> failed for bytes input in Py3.</li>
+</ul>
+</div>
+<div class="section" id="id28">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id29">
+<h1>3.3.3 (2014-03-04)</h1>
+<div class="section" id="id30">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1287118">LP#1287118</a>: Crash when using Element subtypes with <tt class="docutils literal">__slots__</tt>.</li>
+</ul>
+</div>
+<div class="section" id="id31">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The internal classes <tt class="docutils literal">_LogEntry</tt> and <tt class="docutils literal">_Attrib</tt> can no longer be
+subclassed from Python code.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id32">
+<h1>3.3.2 (2014-02-26)</h1>
+<div class="section" id="id33">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The properties <tt class="docutils literal">resolvers</tt> and <tt class="docutils literal">version</tt>, as well as the methods
+<tt class="docutils literal">set_element_class_lookup()</tt> and <tt class="docutils literal">makeelement()</tt>, were lost from
+<tt class="docutils literal">iterparse</tt> objects in 3.3.0.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1222132">LP#1222132</a>: instances of <tt class="docutils literal">XMLSchema</tt>, <tt class="docutils literal">Schematron</tt> and <tt class="docutils literal">RelaxNG</tt>
+did not clear their local <tt class="docutils literal">error_log</tt> before running a validation.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1238500">LP#1238500</a>: lxml.doctestcompare mixed up &quot;expected&quot; and &quot;actual&quot; in
+attribute values.</li>
+<li>Some file I/O tests were failing in MS-Windows due to non-portable temp
+file usage.  Initial patch by Gabi Davar.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/910014">LP#910014</a>: duplicate IDs in a document were not reported by DTD validation.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1185332">LP#1185332</a>: <tt class="docutils literal"><span class="pre">tostring(method=&quot;html&quot;)</span></tt> did not use HTML serialisation
+semantics for trailing tail text.  Initial patch by Sylvain Viollon.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1281139">LP#1281139</a>: <tt class="docutils literal">.attrib</tt> value of Comments lost its mutation methods
+in 3.3.0.  Even though it is empty and immutable, it should still
+provide the same interface as that returned for Elements.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id34">
+<h1>3.3.1 (2014-02-12)</h1>
+<div class="section" id="id35">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id36">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1014290">LP#1014290</a>: HTML documents parsed with <tt class="docutils literal">parser.feed()</tt> failed to find
+elements during tag iteration.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1273709">LP#1273709</a>: Building in PyPy failed due to missing support for
+<tt class="docutils literal">PyUnicode_Compare()</tt> and <tt class="docutils literal"><span class="pre">PyByteArray_*()</span></tt> in PyPy's C-API.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1274413">LP#1274413</a>: Compilation in MSVC failed due to missing &quot;stdint.h&quot; standard
+header file.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1274118">LP#1274118</a>: iterparse() failed to parse BOM prefixed files.</li>
+</ul>
+</div>
+<div class="section" id="id37">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id38">
+<h1>3.3.0 (2014-01-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>The heuristic that distinguishes file paths from URLs was tightened
+to produce less false negatives.</li>
+</ul>
+</div>
+<div class="section" id="id41">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="beta5-2014-01-18">
+<h1>3.3.0beta5 (2014-01-18)</h1>
+<div class="section" id="id42">
+<h2>Features added</h2>
+<ul class="simple">
+<li>The PEP 393 unicode parsing support gained a fallback for wchar strings
+which might still be somewhat common on Windows systems.</li>
+</ul>
+</div>
+<div class="section" id="id43">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Several error handling problems were fixed throughout the code base that
+could previously lead to exceptions being silently swallowed or not
+properly reported.</li>
+<li>The C-API function <tt class="docutils literal">appendChild()</tt> is now deprecated as it does not
+propagate exceptions (its return type is <tt class="docutils literal">void</tt>).  The new function
+<tt class="docutils literal">appendChildToElement()</tt> was added as a safe replacement.</li>
+<li>Passing a string into <tt class="docutils literal">fromstringlist()</tt> raises an exception instead of
+parsing the string character by character.</li>
+</ul>
+</div>
+<div class="section" id="id44">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Document cleanup code was simplified using the new GC features in
+Cython 0.20.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta4-2014-01-12">
+<h1>3.3.0beta4 (2014-01-12)</h1>
+<div class="section" id="id45">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id46">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The (empty) value returned by the <tt class="docutils literal">attrib</tt> property of Entity and Comment
+objects was mutable.</li>
+<li>Element class lookup wasn't available for the new pull parsers or when using
+a custom parser target.</li>
+<li>Setting Element attributes on instantiation with both the <tt class="docutils literal">attrib</tt> argument
+and keyword arguments could modify the mapping passed as <tt class="docutils literal">attrib</tt>.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1266171">LP#1266171</a>: DTDs instantiated from internal/external subsets (i.e. through
+the docinfo property) lost their attribute declarations.</li>
+</ul>
+</div>
+<div class="section" id="id47">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Built with Cython 0.20pre (gitrev 012ae82eb) to prepare support for
+Python 3.4.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta3-2014-01-02">
+<h1>3.3.0beta3 (2014-01-02)</h1>
+<div class="section" id="id48">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Unicode string parsing was optimised for Python 3.3 (PEP 393).</li>
+</ul>
+</div>
+<div class="section" id="id49">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>HTML parsing of Unicode strings could misdecode the input on some platforms.</li>
+<li>Crash in xmlfile() when closing open elements out of order in an error case.</li>
+</ul>
+</div>
+<div class="section" id="id50">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="beta2-2013-12-20">
+<h1>3.3.0beta2 (2013-12-20)</h1>
+<div class="section" id="id51">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">iterparse()</tt> supports the <tt class="docutils literal">recover</tt> option.</li>
+</ul>
+</div>
+<div class="section" id="id52">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in <tt class="docutils literal">iterparse()</tt> for HTML parsing.</li>
+<li>Crash in target parsing with attributes.</li>
+</ul>
+</div>
+<div class="section" id="id53">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The safety check in the read-only tree implementation (e.g. used by
+<tt class="docutils literal">PythonElementClassLookup</tt>) raises a more appropriate <tt class="docutils literal">ReferenceError</tt>
+for illegal access after tree disposal instead of an <tt class="docutils literal">AssertionError</tt>.
+This should only impact test code that specifically checks the original
+behaviour.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta1-2013-12-12">
+<h1>3.3.0beta1 (2013-12-12)</h1>
+<div class="section" id="id54">
+<h2>Features added</h2>
+<ul class="simple">
+<li>New option <tt class="docutils literal">handle_failures</tt> in <tt class="docutils literal">make_links_absolute()</tt> and
+<tt class="docutils literal">resolve_base_href()</tt> (lxml.html) that enables ignoring or
+discarding links that fail to parse as URLs.</li>
+<li>New parser classes <tt class="docutils literal">XMLPullParser</tt> and <tt class="docutils literal">HTMLPullParser</tt> for
+incremental parsing, as implemented for ElementTree in Python 3.4.</li>
+<li><tt class="docutils literal">iterparse()</tt> enables recovery mode by default for HTML parsing
+(<tt class="docutils literal">html=True</tt>).</li>
+</ul>
+</div>
+<div class="section" id="id55">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1255132">LP#1255132</a>: crash when trying to run validation over non-Element (e.g.
+comment or PI).</li>
+<li>Error messages in the log and in exception messages that originated
+from libxml2 could accidentally be picked up from preceding warnings
+instead of the actual error.</li>
+<li>The <tt class="docutils literal">ElementMaker</tt> in lxml.objectify did not accept a dict as
+argument for adding attributes to the element it's building. This
+works as in lxml.builder now.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1228881">LP#1228881</a>: <tt class="docutils literal">repr(XSLTAccessControl)</tt> failed in Python 3.</li>
+<li>Raise <tt class="docutils literal">ValueError</tt> when trying to append an Element to itself or
+to one of its own descendants, instead of running into an infinite
+loop.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1206077">LP#1206077</a>: htmldiff discarded whitespace from the output.</li>
+<li>Compressed plain-text serialisation to file-like objects was broken.</li>
+<li>lxml.html.formfill: Fix textarea form filling.
+The textarea used to be cleared before the new content was set,
+which removed the name attribute.</li>
+</ul>
+</div>
+<div class="section" id="id56">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Some basic API classes use freelists internally for faster
+instantiation.  This can speed up some <tt class="docutils literal">iterparse()</tt> scenarios,
+for example.</li>
+<li><tt class="docutils literal">iterparse()</tt> was rewritten to use the new <tt class="docutils literal">*PullParser</tt>
+classes internally instead of being a parser itself.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id57">
+<h1>3.2.5 (2014-01-02)</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 xmlfile() when closing open elements out of order in an error case.</li>
+<li>Crash in target parsing with attributes.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1255132">LP#1255132</a>: crash when trying to run validation over non-Element (e.g.
+comment or PI).</li>
+</ul>
+</div>
+<div class="section" id="id61">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id62">
+<h1>3.2.4 (2013-11-07)</h1>
+<div class="section" id="id63">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id64">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory leak when creating an XPath evaluator in a thread.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1228881">LP#1228881</a>: <tt class="docutils literal">repr(XSLTAccessControl)</tt> failed in Python 3.</li>
+<li>Raise <tt class="docutils literal">ValueError</tt> when trying to append an Element to itself or
+to one of its own descendants.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1206077">LP#1206077</a>: htmldiff discarded whitespace from the output.</li>
+<li>Compressed plain-text serialisation to file-like objects was broken.</li>
+</ul>
+</div>
+<div class="section" id="id67">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id68">
+<h1>3.2.3 (2013-07-28)</h1>
+<div class="section" id="id69">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Fix support for Python 2.4 which was lost in 3.2.2.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id70">
+<h1>3.2.2 (2013-07-28)</h1>
+<div class="section" id="id71">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id72">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1185701">LP#1185701</a>: spurious XMLSyntaxError after finishing iterparse().</li>
+<li>Crash in lxml.objectify during xsi annotation.</li>
+</ul>
+</div>
+<div class="section" id="id73">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Return values of user provided element class lookup methods are now
+validated against the type of the XML node they represent to prevent
+API class mismatches.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id74">
+<h1>3.2.1 (2013-05-11)</h1>
+<div class="section" id="id75">
+<h2>Features added</h2>
+<ul class="simple">
+<li>The methods <tt class="docutils literal">apply_templates()</tt> and <tt class="docutils literal">process_children()</tt> of XSLT
+extension elements have gained two new boolean options <tt class="docutils literal">elements_only</tt>
+and <tt class="docutils literal">remove_blank_text</tt> that discard either all strings or whitespace-only
+strings from the result list.</li>
+</ul>
+</div>
+<div class="section" id="id76">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>When moving Elements to another tree, the namespace cleanup mechanism
+no longer drops namespace prefixes from attributes for which it finds
+a default namespace declaration, to prevent them from appearing as
+unnamespaced attributes after serialisation.</li>
+<li>Returning non-type objects from a custom class lookup method could lead
+to a crash.</li>
+<li>Instantiating and using subtypes of Comments and ProcessingInstructions
+crashed.</li>
+</ul>
+</div>
+<div class="section" id="id77">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id78">
+<h1>3.2.0 (2013-04-28)</h1>
+<div class="section" id="id79">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id80">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/690319">LP#690319</a>: Leading whitespace could change the behaviour of the string
+parsing functions in <tt class="docutils literal">lxml.html</tt>.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/599318">LP#599318</a>: The string parsing functions in <tt class="docutils literal">lxml.html</tt> are more robust
+in the face of uncommon HTML content like framesets or missing body tags.
+Patch by Stefan Seelmann.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/712941">LP#712941</a>: I/O errors while trying to access files with paths that contain
+non-ASCII characters could raise <tt class="docutils literal">UnicodeDecodeError</tt> instead of properly
+reporting the <tt class="docutils literal">IOError</tt>.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/673205">LP#673205</a>: Parsing from in-memory strings disabled network access in the
+default parser and made subsequent attempts to parse from a URL fail.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/971754">LP#971754</a>: lxml.html.clean appends 'nofollow' to 'rel' attributes instead
+of overwriting the current value.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/715687">LP#715687</a>: lxml.html.clean no longer discards scripts that are explicitly
+allowed by the user provided whitelist.  Patch by Christine Koppelt.</li>
+</ul>
+</div>
+<div class="section" id="id81">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id82">
+<h1>3.1.2 (2013-04-12)</h1>
+<div class="section" id="id83">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id84">
+<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="id85">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id86">
+<h1>3.1.1 (2013-03-29)</h1>
+<div class="section" id="id87">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id88">
+<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="id89">
+<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="id90">
+<h1>3.1.0 (2013-02-10)</h1>
+<div class="section" id="id91">
+<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="id92">
+<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="id93">
+<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="id94">
+<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="id95">
+<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="id96">
+<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="id97">
+<h1>3.0.2 (2012-12-14)</h1>
+<div class="section" id="id98">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id99">
+<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="id100">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id101">
+<h1>3.0.1 (2012-10-14)</h1>
+<div class="section" id="id102">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id103">
+<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="id104">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id105">
+<h1>3.0 (2012-10-08)</h1>
+<div class="section" id="id106">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id107">
+<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="id108">
+<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 &quot;--with-cython&quot;.  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
+&quot;--without-cython&quot;.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta1-2012-09-26">
+<h1>3.0beta1 (2012-09-26)</h1>
+<div class="section" id="id109">
+<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="id110">
+<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="id111">
+<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="id112">
+<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">&quot;{*}name&quot;</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">&quot;{ns}name&quot;</tt>, <tt class="docutils literal"><span class="pre">&quot;{}name&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;{*}name&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;{ns}*&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;{}*&quot;</span></tt>
+and <tt class="docutils literal"><span class="pre">&quot;{*}*&quot;</span></tt>.  Note that <tt class="docutils literal">&quot;name&quot;</tt> is equivalent to <tt class="docutils literal"><span class="pre">&quot;{}name&quot;</span></tt>,
+but <tt class="docutils literal">&quot;*&quot;</tt> is <tt class="docutils literal"><span class="pre">&quot;{*}*&quot;</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="id113">
+<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="id114">
+<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="id115">
+<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="id116">
+<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="id117">
+<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 &quot;lxml.cssselect&quot; was moved into a separate PyPI
+package called &quot;cssselect&quot;.  To continue using it, you must install
+that package separately.  The &quot;lxml.cssselect&quot; module is still
+available and provides the same interface, provided the &quot;cssselect&quot;
+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="id118">
+<h1>2.3.6 (2012-09-28)</h1>
+<div class="section" id="id119">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id120">
+<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="id121">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id122">
+<h1>2.3.5 (2012-07-31)</h1>
+<div class="section" id="id123">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id124">
+<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="id125">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id126">
+<h1>2.3.4 (2012-03-26)</h1>
+<div class="section" id="id127">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id128">
+<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="id129">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id130">
+<h1>2.3.3 (2012-01-04)</h1>
+<div class="section" id="id131">
+<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="id132">
+<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.
+&quot;E :pseudo&quot; should parse the same as &quot;E *:pseudo&quot;, not &quot;E:pseudo&quot;.
+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="id133">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id134">
+<h1>2.3.2 (2011-11-11)</h1>
+<div class="section" id="id135">
+<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="id136">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Fixed the &quot;descendant&quot; 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
+&quot;&gt;&quot;, &quot;+&quot; and &quot;~&quot; is now correctly ignored. Previously is was parsed as
+a descendant combinator. For example, &quot;div&gt; .foo&quot; was parsed the same as
+&quot;div&gt;* .foo&quot; instead of &quot;div&gt;.foo&quot;. Patch by Simon Sapin.</li>
+</ul>
+</div>
+<div class="section" id="id137">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id138">
+<h1>2.3.1 (2011-09-25)</h1>
+<div class="section" id="id139">
+<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="id140">
+<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">&quot;div <span class="pre">*:last-child&quot;</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">&lt;option&gt;</tt> tags no longer show up in the
+collected form values.</li>
+<li>Adding/removing <tt class="docutils literal">&lt;option&gt;</tt> values to/from a multiple select form
+field properly selects them and unselects them.</li>
+</ul>
+</div>
+<div class="section" id="id141">
+<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="id142">
+<h1>2.3 (2011-02-06)</h1>
+<div class="section" id="id143">
+<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="id144">
+<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 severely 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="id145">
+<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="id146">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id147">
+<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="id148">
+<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="id149">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id150">
+<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="id151">
+<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="id152">
+<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="id153">
+<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 '&lt;/div&gt;' 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=&quot;val&quot;]</span></tt> and
+<tt class="docutils literal">x <span class="pre">[attr=&quot;val&quot;]</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="id154">
+<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="id155">
+<h1>2.2.8 (2010-09-02)</h1>
+<div class="section" id="id156">
+<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="id157">
+<h1>2.2.7 (2010-07-24)</h1>
+<div class="section" id="id158">
+<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="id159">
+<h1>2.2.6 (2010-03-02)</h1>
+<div class="section" id="id160">
+<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="id161">
+<h1>2.2.5 (2010-02-28)</h1>
+<div class="section" id="id162">
+<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 &quot;/&quot;).</li>
+</ul>
+</div>
+<div class="section" id="id163">
+<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="id164">
+<h1>2.2.4 (2009-11-11)</h1>
+<div class="section" id="id165">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Static build of libxml2/libxslt was broken.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id166">
+<h1>2.2.3 (2009-10-30)</h1>
+<div class="section" id="id167">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id168">
+<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 honour 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="id169">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id170">
+<h1>2.2.2 (2009-06-21)</h1>
+<div class="section" id="id171">
+<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="id172">
+<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 &lt;= 2.0
+behaviour.</li>
+</ul>
+</div>
+<div class="section" id="id173">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id174">
+<h1>2.2.1 (2009-06-02)</h1>
+<div class="section" id="id175">
+<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="id176">
+<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="id177">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id178">
+<h1>2.2 (2009-03-21)</h1>
+<div class="section" id="id179">
+<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="id180">
+<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="id181">
+<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="id182">
+<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="id183">
+<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="id184">
+<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="id185">
+<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="id186">
+<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="id187">
+<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(&quot;link&quot;)</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="id188">
+<h1>2.1.5 (2009-01-06)</h1>
+<div class="section" id="id189">
+<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="id190">
+<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="id191">
+<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="id192">
+<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="id193">
+<h1>2.1.4 (2008-12-12)</h1>
+<div class="section" id="id194">
+<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="id195">
+<h1>2.0.11 (2008-12-12)</h1>
+<div class="section" id="id196">
+<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="id197">
+<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="id198">
+<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="id199">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id200">
+<h1>2.1.3 (2008-11-17)</h1>
+<div class="section" id="id201">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id202">
+<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="id203">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id204">
+<h1>2.0.10 (2008-11-17)</h1>
+<div class="section" id="id205">
+<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="id206">
+<h1>2.1.2 (2008-09-05)</h1>
+<div class="section" id="id207">
+<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="id208">
+<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="id209">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id210">
+<h1>2.0.9 (2008-09-05)</h1>
+<div class="section" id="id211">
+<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="id212">
+<h1>2.1.1 (2008-07-24)</h1>
+<div class="section" id="id213">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id214">
+<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="id215">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id216">
+<h1>2.0.8 (2008-07-24)</h1>
+<div class="section" id="id217">
+<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="id218">
+<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="id219">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id220">
+<h1>2.1 (2008-07-09)</h1>
+<div class="section" id="id221">
+<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="id222">
+<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="id223">
+<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="id224">
+<h1>2.0.7 (2008-06-20)</h1>
+<div class="section" id="id225">
+<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="id226">
+<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="id227">
+<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="id228">
+<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="id229">
+<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 &quot;flat_namespace&quot; 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="id230">
+<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="id231">
+<h1>2.0.6 (2008-05-31)</h1>
+<div class="section" id="id232">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id233">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Incorrect evaluation of <tt class="docutils literal"><span class="pre">el.find(&quot;tag[child]&quot;)</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="id234">
+<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="id235">
+<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="id236">
+<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="id237">
+<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="id238">
+<h1>2.0.5 (2008-05-01)</h1>
+<div class="section" id="id239">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id240">
+<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 &quot;STOPPED&quot;, which
+let some XSLT errors pass silently.</li>
+<li>Memory leak in Schematron with libxml2 &gt;= 2.6.31.</li>
+</ul>
+</div>
+<div class="section" id="id241">
+<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="id242">
+<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="id243">
+<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 &quot;STOPPED&quot;, which
+let some XSLT errors pass silently.</li>
+<li>Memory leak in Schematron with libxml2 &gt;= 2.6.31.</li>
+<li>lxml.etree accepted non well-formed namespace prefix names.</li>
+</ul>
+</div>
+<div class="section" id="id244">
+<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="id245">
+<h1>2.0.4 (2008-04-13)</h1>
+<div class="section" id="id246">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id247">
+<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="id248">
+<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="id249">
+<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="id250">
+<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="id251">
+<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="id252">
+<h1>2.0.3 (2008-03-26)</h1>
+<div class="section" id="id253">
+<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="id254">
+<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">&lt;br&gt;</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="id255">
+<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="id256">
+<h1>2.0.2 (2008-02-22)</h1>
+<div class="section" id="id257">
+<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="id258">
+<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="id259">
+<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=&quot;xml&quot;</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="id260">
+<h1>2.0.1 (2008-02-13)</h1>
+<div class="section" id="id261">
+<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="id262">
+<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="id263">
+<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="id264">
+<h1>2.0 (2008-02-01)</h1>
+<div class="section" id="id265">
+<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;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="id266">
+<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">&lt;object&gt;</tt>
+tags weren't recognized.  (Note: plugin-specific link parameters
+still aren't recognized.)  Also, the <tt class="docutils literal">&lt;embed&gt;</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">&lt;tag <span class="pre">xmlns=&quot;...&quot;&gt;</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="id267">
+<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 &quot;lxml.*.pyx&quot;, such as
+&quot;lxml.etree.pyx&quot;.  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">&lt;&gt;&amp;/&quot;'</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 losing 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 &quot;NoneType&quot;</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="id268">
+<h1>1.3.6 (2007-10-29)</h1>
+<div class="section" id="id269">
+<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="id270">
+<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="id271">
+<h1>1.3.5 (2007-10-22)</h1>
+<div class="section" id="id272">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id273">
+<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="id274">
+<h1>1.3.4 (2007-08-30)</h1>
+<div class="section" id="id275">
+<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="id276">
+<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="id277">
+<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="id278">
+<h1>1.3.3 (2007-07-26)</h1>
+<div class="section" id="id279">
+<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="id280">
+<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="id281">
+<h1>1.3.2 (2007-07-03)</h1>
+<div class="section" id="id282">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id283">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>&quot;deallocating None&quot; crash bug</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id284">
+<h1>1.3.1 (2007-07-02)</h1>
+<div class="section" id="id285">
+<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="id286">
+<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="id287">
+<h1>1.3 (2007-06-24)</h1>
+<div class="section" id="id288">
+<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="id289">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Removing Elements from a tree could make them lose 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="id290">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>major restructuring in the documentation</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id291">
+<h1>1.2.1 (2007-02-27)</h1>
+<div class="section" id="id292">
+<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[&quot;text&quot;]</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="id293">
+<h1>1.2 (2007-02-20)</h1>
+<div class="section" id="id294">
+<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="id295">
+<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 &lt;= 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="id296">
+<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 compatibility of the public C-API</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id297">
+<h1>1.1.2 (2006-10-30)</h1>
+<div class="section" id="id298">
+<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="id299">
+<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="id300">
+<h1>1.1.1 (2006-09-21)</h1>
+<div class="section" id="id301">
+<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="id302">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>lxml.objectify failed to support long data values (e.g., &quot;123L&quot;)</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="id303">
+<h1>1.1 (2006-09-13)</h1>
+<div class="section" id="id304">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Comments and processing instructions return '&lt;!-- comment --&gt;' and
+'&lt;?pi-target content?&gt;' 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 &quot;/&quot; 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="id305">
+<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="id306">
+<h1>1.0.4 (2006-09-09)</h1>
+<div class="section" id="id307">
+<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="id308">
+<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="id309">
+<h1>1.0.3 (2006-08-08)</h1>
+<div class="section" id="id310">
+<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="id311">
+<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="id312">
+<h1>1.0.2 (2006-06-27)</h1>
+<div class="section" id="id313">
+<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="id314">
+<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="id315">
+<h1>1.0.1 (2006-06-09)</h1>
+<div class="section" id="id316">
+<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="id317">
+<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 lose 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="id318">
+<h1>1.0 (2006-06-01)</h1>
+<div class="section" id="id319">
+<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 &quot;xslt.pxi&quot;</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="id320">
+<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' -&gt; '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 &lt;= 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="id321">
+<h1>0.9.2 (2006-05-10)</h1>
+<div class="section" id="id322">
+<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="id323">
+<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="id324">
+<h1>0.9.1 (2006-03-30)</h1>
+<div class="section" id="id325">
+<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="id326">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory deallocation bug when using XSLT output method &quot;html&quot;</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="id327">
+<h1>0.9 (2006-03-20)</h1>
+<div class="section" id="id328">
+<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="id329">
+<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="id330">
+<h1>0.8 (2005-11-03)</h1>
+<div class="section" id="id331">
+<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="id332">
+<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="id333">
+<h1>0.7 (2005-06-15)</h1>
+<div class="section" id="id334">
+<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="id335">
+<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="id336">
+<h1>0.6 (2005-05-14)</h1>
+<div class="section" id="id337">
+<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="id338">
+<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="id339">
+<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="id340">
+<h1>0.5 (2005-04-08)</h1>
+<p>Initial public release.</p>
+</div>
+</div>
+<div class="footer">
+<hr class="footer" />
+Generated on: 2016-07-24.
+
+</div>
+</body>
+</html>
index 6f18595ea8b34a9ce9a3f19a995bc4979d62ef00..3cd4cc1d0d3609d44f4c9550303fa4ae9810eaee 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>ElementTree compatibility of lxml.etree</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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>
@@ -183,7 +199,7 @@ enough to replace a shallow copy in your case.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 605db0e755a6012f1c7d6bb94b500faa8b2e2b5d..158723ef683ff447392905250297ddeaaa82edb7 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>Credits</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></div><h1 class="title">Credits</h1>
 
 <div class="section" id="main-contributors">
 <h1>Main contributors</h1>
@@ -72,7 +88,7 @@ Holger Krekel for originally hosting lxml on codespeak.net</li>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 451974fd5f6d74e2f92dee9ab741f6b7bda345f6..3338c6a6585d27b20cc783db587ce213b5b5b510 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>lxml.cssselect</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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
@@ -92,7 +108,7 @@ namespace URIs: the <tt class="docutils literal">CSSSelector</tt> class accepts
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index f84da628bff9f312efd3539381f8b9768fa1beee..6e0d0b52ee7bc3b3d9a2f366532fc202774e10b1 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>Using custom Element classes in lxml</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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
@@ -443,7 +459,7 @@ subclasses for elements of this namespace:</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 85236336e0c538d0395874b1673d4bb6e7a914c0..ac7536ae2d2d8b13b901fb26d1a52dc3111f6ea0 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>BeautifulSoup Parser</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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 for working with real-world and broken HTML,
 just like <a class="reference external" href="lxmlhtml.html">lxml.html</a>.  As of version 4.x, it can use
@@ -187,7 +203,7 @@ you can simply pass the resulting Unicode string into lxml's parser.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 7ed92f90fcbb523fb3ee7f64d5f28bdbc1809423..275290601014dd68888bc6720c3716e4cfaf443a 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>Python extensions for XPath and XSLT</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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>
@@ -224,7 +240,7 @@ and use the <tt class="docutils literal">Extension</tt> helper:</p>
 <span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s">'l:function1(string(b))'</span><span class="p">))</span>
 <span class="go">1Haegar</span>
 </pre></div>
-<p>The optional second argument to <tt class="docutils literal">Extension</tt> can either be be a
+<p>The optional second argument to <tt class="docutils literal">Extension</tt> can either be a
 sequence of names to select from the module, a dictionary that
 explicitly maps function names to their XPath alter-ego or <tt class="docutils literal">None</tt>
 (explicitly passed) to take all available functions under their
@@ -505,7 +521,7 @@ will work:</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index c0bc567f24e31e0fde1c5dd35d8f8fcdf88f5d3a..b85957668a28d478f0a678518da0fb3ecd054618 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>html5lib Parser</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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
@@ -47,7 +63,7 @@ library (if installed) will guess the charset if ambiguities exist.</p>
 <dt><tt class="docutils literal">fragment_fromstring(string, create_parent=False, guess_charset=False)</tt>:</dt>
 <dd><p class="first">Returns an HTML fragment from a string.  The fragment must contain
 just a single element, unless <tt class="docutils literal">create_parent</tt> is given;
-e.g,. <tt class="docutils literal">fragment_fromstring(string, <span class="pre">create_parent='div')</span></tt> will
+e.g., <tt class="docutils literal">fragment_fromstring(string, <span class="pre">create_parent='div')</span></tt> will
 wrap the element in a <tt class="docutils literal">&lt;div&gt;</tt>.  If <tt class="docutils literal">create_parent</tt> is true the
 default parent tag (div) is used.</p>
 <p class="last">If a bytestring is passed and <tt class="docutils literal">guess_charset</tt> is true the chardet
@@ -74,7 +90,7 @@ module.  Note that these are the parser classes provided by html5lib.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 26458a116ce1f0af72d4b9ecfe45949266b22a6e..cbecd7098395770d588ad1fe4aa199d5ee404471 100644 (file)
@@ -7,10 +7,26 @@
 <meta content="lxml - the most feature-rich and easy-to-use library for processing XML and HTML in the Python language" name="description" />
 <meta content="Python XML, XML processing, HTML, lxml, simple XML, ElementTree, etree, lxml.etree, objectify, XML parsing, XML validation, XPath, XSLT" name="keywords" />
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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">&#187; lxml takes all the pain out of XML. &#171;</a></div>
@@ -51,7 +67,7 @@ fast Python XML processing.</p>
 </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.6.0.pdf">PDF
+<p>The complete lxml documentation is available for download as <a class="reference external" href="lxmldoc-3.6.1.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">
@@ -114,8 +130,8 @@ external C modules, including fast custom element class support.</p>
 Index</a> (PyPI).  It has the source
 that compiles on various platforms.  The source distribution is signed
 with <a class="reference external" href="pubkey.asc">this key</a>.</p>
-<p>The latest version is <a class="reference external" href="/files/lxml-3.6.0.tgz">lxml 3.6.0</a>, released 2016-03-17
-(<a class="reference external" href="/changes-3.6.0.html">changes for 3.6.0</a>).  <a class="reference external" href="#old-versions">Older versions</a>
+<p>The latest version is <a class="reference external" href="/files/lxml-3.6.1.tgz">lxml 3.6.1</a>, released 2016-07-24
+(<a class="reference external" href="/changes-3.6.1.html">changes for 3.6.1</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>
@@ -123,7 +139,7 @@ are listed below.</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.6.0.pdf">PDF documentation</a>.</p>
+<a class="reference external" href="lxmldoc-3.6.1.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
@@ -176,6 +192,7 @@ obstacle to using lxml in your codebase.</p>
 <a class="reference external" href="http://lxml.de/3.5/">3.5</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.6.1.tgz">lxml 3.6.1</a>, released 2016-07-24 (<a class="reference external" href="/changes-3.6.1.html">changes for 3.6.1</a>)</li>
 <li><a class="reference external" href="/files/lxml-3.6.0.tgz">lxml 3.6.0</a>, released 2016-03-17 (<a class="reference external" href="/changes-3.6.0.html">changes for 3.6.0</a>)</li>
 <li><a class="reference external" href="/files/lxml-3.5.0.tgz">lxml 3.5.0</a>, released 2015-11-13 (<a class="reference external" href="/changes-3.5.0.html">changes for 3.5.0</a>)</li>
 <li><a class="reference external" href="/files/lxml-3.5.0b1.tgz">lxml 3.5.0b1</a>, released 2015-09-18 (<a class="reference external" href="/changes-3.5.0b1.html">changes for 3.5.0b1</a>)</li>
@@ -207,7 +224,7 @@ donation is non-refundable.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 5ae6c6672e75a8f5c30d3bf910b0e4d38a155b1b..b1aec4e4458ab9bfedd870de08e2331cf112ea0f 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>Installing lxml</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></div><h1 class="title">Installing lxml</h1>
 
 <div class="contents topic" id="contents">
 <p class="topic-title first">Contents</p>
@@ -188,7 +204,7 @@ same download site.  Further build instructions are in the
 <p>If you are not using macports or want to use a more recent lxml
 release, you have to build it yourself.  While the pre-installed system
 libraries of libxml2 and libxslt are less outdated in recent MacOS-X
-versions than they used to be, so lxml should work them them out of the
+versions than they used to be, so lxml should work with them out of the
 box, it is still recommended to use a static build with the most recent
 library versions.</p>
 <p>Luckily, lxml's <tt class="docutils literal">setup.py</tt> script has built-in support for building
@@ -199,7 +215,7 @@ read the
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 8d66d6b00f21d6c3b458184b72503887c8a3c905..ec92e6b1c9752065064cd092710fd690f50855bb 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>Why lxml?</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></div><h1 class="title">Why lxml?</h1>
 
 <div class="contents topic" id="contents">
 <p class="topic-title first">Contents</p>
@@ -66,7 +82,7 @@ having to learn new things -- XML is complicated enough.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 05a6ea91482de6a82ac3a75ec6b8f92c1f9b42be..119c533509b4699eb512aea9ff47755943395584 100644 (file)
@@ -8,10 +8,26 @@
 <meta content="How to read and work on the source code of lxml" name="description" />
 <meta content="lxml, XML, Cython, source code, develop, comprehend, understand" name="keywords" />
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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" />
@@ -181,7 +197,7 @@ scheme.</dd>
 <dd>Parsers for XML and HTML.  This is the main parser engine.  It's
 the reason why you can parse a document from various sources in
 two lines of Python code.  It's definitely not the right place to
-start reading lxml's soure code.</dd>
+start reading lxml's source code.</dd>
 <dt>parsertarget.pxi</dt>
 <dd>An ElementTree compatible parser target implementation based on
 the SAX2 interface of libxml2.</dd>
@@ -270,7 +286,7 @@ implemented in pure Python.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 5c597e060a5e897e800d991a07517f37449bac1d..f828e1ff691293ca800b76c9aae92fc8760b8d6c 100644 (file)
@@ -6,10 +6,26 @@
 <title>lxml.html</title>
 <meta name="author" content="Ian Bicking" />
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></div><h1 class="title">lxml.html</h1>
 <table class="docinfo" frame="void" rules="none">
 <col class="docinfo-name" />
 <col class="docinfo-content" />
@@ -80,7 +96,7 @@ and there is a body and possibly a head.</dd>
 <dt><tt class="docutils literal">fragment_fromstring(string, create_parent=False)</tt>:</dt>
 <dd>Returns an HTML fragment from a string.  The fragment must contain
 just a single element, unless <tt class="docutils literal">create_parent</tt> is given;
-e.g,. <tt class="docutils literal">fragment_fromstring(string, <span class="pre">create_parent='div')</span></tt> will
+e.g., <tt class="docutils literal">fragment_fromstring(string, <span class="pre">create_parent='div')</span></tt> will
 wrap the element in a <tt class="docutils literal">&lt;div&gt;</tt>.</dd>
 <dt><tt class="docutils literal">fragments_fromstring(string)</tt>:</dt>
 <dd>Returns a list of the elements found in the fragment.</dd>
@@ -673,7 +689,7 @@ microformat.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index f34d91f8cba71eff42ad0276bab430e0f3567777..b63ddb4b90f0dafe6e5ea036af552caccca951b1 100644 (file)
@@ -6,10 +6,26 @@
 <title>lxml.objectify</title>
 <meta name="authors" content="Stefan Behnel  Holger Joukl" />
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></div><h1 class="title">lxml.objectify</h1>
 <table class="docinfo" frame="void" rules="none">
 <col class="docinfo-name" />
 <col class="docinfo-content" />
@@ -235,7 +251,7 @@ will not support the <tt class="docutils literal">objectify</tt> API by themselv
 <div class="syntax"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">E</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">E</span>
 <span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">E</span><span class="o">.</span><span class="n">root</span><span class="p">(</span>
 <span class="gp">... </span>  <span class="n">E</span><span class="o">.</span><span class="n">a</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span>
-<span class="gp">... </span>  <span class="n">E</span><span class="o">.</span><span class="n">b</span><span class="p">(</span><span class="mf">6.1</span><span class="p">),</span>
+<span class="gp">... </span>  <span class="n">E</span><span class="o">.</span><span class="n">b</span><span class="p">(</span><span class="mf">6.21</span><span class="p">),</span>
 <span class="gp">... </span>  <span class="n">E</span><span class="o">.</span><span class="n">c</span><span class="p">(</span><span class="bp">True</span><span class="p">),</span>
 <span class="gp">... </span>  <span class="n">E</span><span class="o">.</span><span class="n">d</span><span class="p">(</span><span class="s">"how"</span><span class="p">,</span> <span class="n">tell</span><span class="o">=</span><span class="s">"me"</span><span class="p">)</span>
 <span class="gp">... </span><span class="p">)</span>
@@ -243,7 +259,7 @@ will not support the <tt class="docutils literal">objectify</tt> API by themselv
 <span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</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">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
 <span class="go">&lt;root xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;</span>
 <span class="go">  &lt;a py:pytype="int"&gt;5&lt;/a&gt;</span>
-<span class="go">  &lt;b py:pytype="float"&gt;6.1&lt;/b&gt;</span>
+<span class="go">  &lt;b py:pytype="float"&gt;6.21&lt;/b&gt;</span>
 <span class="go">  &lt;c py:pytype="bool"&gt;true&lt;/c&gt;</span>
 <span class="go">  &lt;d py:pytype="str" tell="me"&gt;how&lt;/d&gt;</span>
 <span class="go">&lt;/root&gt;</span>
@@ -1149,7 +1165,7 @@ support any XPath expression.</li>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index a62cec6c3f6b8e39fc0806e2f254838a36aa1a5f..d9b0e0edb114205b6d7ae5b72c30518d80b98ed3 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>Parsing XML and HTML with lxml</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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
@@ -851,7 +867,7 @@ with UTF-8 is also considerably faster in most cases.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 5b0fa94ef612ee842fbaf62169f9522cec221437..34ef3455f88acd55695e08dcde4ebd50ee927249 100644 (file)
@@ -8,10 +8,26 @@
 <meta content="Performance evaluation of lxml and ElementTree: fast operations, common pitfalls and optimisation hints." name="description" />
 <meta content="Python XML parser performance, XML processing, performance comparison, lxml performance, lxml.etree, lxml.objectify, benchmarks, ElementTree" name="keywords" />
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></div><h1 class="title">Benchmarks and Speed</h1>
 <table class="docinfo" frame="void" rules="none">
 <col class="docinfo-name" />
 <col class="docinfo-content" />
@@ -614,7 +630,7 @@ even back then, it was quite a bit faster than what lxml could achieve.</p>
 <p>Since then, lxml has matured a lot and has gotten much faster.  The iterparse
 variant now runs in 0.14 seconds, and if you remove the <tt class="docutils literal">v.clear()</tt>, it is
 even a little faster (which isn't the case for cElementTree).</p>
-<p>One of the many great tools in lxml is XPath, a swiss army knife for finding
+<p>One of the many great tools in lxml is XPath, a Swiss army knife for finding
 things in XML documents.  It is possible to move the whole thing to a pure
 XPath implementation, which looks like this:</p>
 <div class="syntax"><pre><span class="k">def</span> <span class="nf">bench_lxml_xpath_all</span><span class="p">():</span>
@@ -782,7 +798,7 @@ random.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 89bc2904d6c41059f375452605d6d2e3c365dfaa..01b2e00994f7c6ce810908d480acff8e7919ef67 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>Document loading and URL resolving</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></div><h1 class="title">Document loading and URL resolving</h1>
 
 <div class="contents topic" id="contents">
 <p class="topic-title first">Contents</p>
@@ -234,7 +250,7 @@ documents or raises exceptions if access is denied.</li>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 99de7ae707445b4e7cae13599675aedb6db37f33..4ab21dd0be37181ba5bd203c2df66002e802fdce 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>Sax support</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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
@@ -93,7 +109,7 @@ processing.</p>
 <h1>Interfacing with pulldom/minidom</h1>
 <p>lxml.sax is a simple way to interface with the standard XML support in the
 Python library.  Note, however, that this is a one-way solution, as Python's
-DOM implementation connot generate SAX events from a DOM tree.</p>
+DOM implementation cannot generate SAX events from a DOM tree.</p>
 <p>You can use xml.dom.pulldom to build a minidom from lxml:</p>
 <div class="syntax"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">xml.dom.pulldom</span> <span class="kn">import</span> <span class="n">SAX2DOM</span>
 <span class="gp">&gt;&gt;&gt; </span><span class="n">handler</span> <span class="o">=</span> <span class="n">SAX2DOM</span><span class="p">()</span>
@@ -108,7 +124,7 @@ DOM implementation connot generate SAX events from a DOM tree.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index db45c07e0d3e981f692536749900a8fbdccb0c37..606f88998876986c4c33d50b2f628074152488c2 100644 (file)
@@ -1,12 +1,12 @@
 <!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" />
-  <title>Sitemap of lxml.de - Processing XML and HTML with Python</title>
-  <meta content="lxml - the most feature-rich and easy-to-use library for processing XML and HTML in the Python language" name="description" />
-  <meta content="Python XML, XML, XML processing, HTML, lxml, simple XML, ElementTree, etree, lxml.etree, objectify, XML parsing, XML validation, XPath, XSLT" name="keywords" />
-   </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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Sitemap of lxml.de - Processing XML and HTML with Python</title>
+    <meta content="lxml - the most feature-rich and easy-to-use library for processing XML and HTML in the Python language" name="description" />
+    <meta content="Python XML, XML, XML processing, HTML, lxml, simple XML, ElementTree, etree, lxml.etree, objectify, XML parsing, XML validation, XPath, XSLT" name="keywords" />
+  </head>
+  <body>
+    <h1>Sitemap of lxml.de - Processing XML and HTML with Python</h1>
+  <div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></ul><li><a href="http://lxml.de/files/">Download files</a></li></div></div></body>
+</html>
\ No newline at end of file
index 0a13203ddf2d8b332e00db695700e62bc3a6fc78..46523a0d4ecd37ecb69a69fc46ad98f0f1402283 100644 (file)
@@ -1,15 +1,18 @@
 body {
-    font: 13px Arial, Verdana, Helvetica, sans-serif;
+    font: 11pt Arial, Verdana, Helvetica, sans-serif;
     text-align: center;
 }
 
-@media screen {
+@media screen and (min-width: 960px) and (min-height: 720px) and (max-resolution: 150dpi),
+       screen and (min-width: 1280px) and (min-height: 720px) {
     body {
-        padding: 1em 1em 1em 21em;
+        padding: 1em 3em 1em 26em;
     }
+}
 
+@media screen {
     div.document, div.footer {
-        width: 45em;
+        max-width: 45em;
         background-color: white;
     }
 }
@@ -17,7 +20,7 @@ body {
 @media print {
     div.document, div.footer {
         width: auto;
-        padding-left: 0px;
+        padding-left: 0;
     }
 
     div.sidemenu {
@@ -60,48 +63,81 @@ div.contents.topic > p > a {
 
 /*** side menu ***/
 
-div.sidemenu {
-    position: absolute;
-    top: 0;
-    left: 0;
-    width: 26em;
-    font-size: 10px;
-    text-align: left;
-    border-right: groove gray;
-    border-bottom: groove gray;
-    padding-right: 1ex;
-    background: #FFFAFA url(python-xml.png) no-repeat top right;
+@media (min-width: 1280px) and (min-height: 720px),
+       (min-width: 960px) and (min-height: 720px) and (max-resolution: 150dpi) {
+    div.sidemenu .menutrigger {
+        display: none;
+    }
+
+    div.sidemenu {
+        position: absolute;
+        top: 0;
+        left: 0;
+        width: 26em;
+        font-size: 8pt;
+        text-align: left;
+        border-right: groove gray;
+        border-bottom: groove gray;
+        padding-right: 1ex;
+        background: #FFFAFA url(python-xml.png) no-repeat top right;
+    }
+
+    html > body div.sidemenu {
+        /* ignored by IE -> everyone else knows 'fixed', right?  */
+        position: fixed;
+    }
 }
 
-html > body div.sidemenu {
-    /* ignored by IE -> everyone else knows 'fixed', right?  */
-    position: fixed;
+@media (max-width: 959px), (max-height: 719px), (max-width: 1279px) and (min-resolution: 151dpi) {
+    div.sidemenu > div.menutrigger {
+        display: block;
+        border: solid darkgreen 2px;
+        padding: 2px;
+        text-align: center;
+        width: 6ex;
+    }
+
+    div.sidemenu > div.menu {
+        display: none;
+        position: absolute;
+        z-index: 999;
+        font-size: 9pt;
+        text-align: left;
+        border: groove gray;
+        padding-right: 1ex;
+        background: #FFFAFA url(python-xml.png) no-repeat top right;
+    }
+
+    div.sidemenu:hover > div.menu,
+    div.sidemenu.visible > div.menu {
+        display: block;
+    }
 }
 
-div.sidemenu span.section.title {
+div.sidemenu > div.menu span.section.title {
     line-height: 1.2em;
     font-size: 130%;
 }
 
-div.sidemenu ul.menu.current li {
+div.sidemenu > div.menu ul.menu.current li {
     color: #CC0000;
     font-size: 105%;
 }
 
-div.sidemenu ul.menu.current > li > a {
+div.sidemenu > div.menu ul.menu.current > li > a {
     color: #CC0000;
 }
 
-div.sidemenu ul.menu.current ul.submenu {
+div.sidemenu > div.menu ul.menu.current ul.submenu {
     display: block;
 }
 
-div.sidemenu ul.menu.foreign ul.submenu li {
+div.sidemenu > div.menu ul.menu.foreign ul.submenu li {
     padding-top: 2px;
     padding-bottom: 2px;
 }
 
-div.sidemenu ul.menu.foreign li.menu:hover ul.submenu {
+div.sidemenu > div.menu ul.menu.foreign li.menu:hover ul.submenu {
     display: block;
     position: absolute;
     border: groove #990000;
@@ -113,11 +149,11 @@ div.sidemenu ul.menu.foreign li.menu:hover ul.submenu {
     background-color: white;
 }
 
-div.sidemenu ul.submenu {
+div.sidemenu > div.menu ul.submenu {
     display: none;
 }
 
-div.sidemenu ul {
+div.sidemenu > div.menu ul {
     line-height: 1em;
     margin: 1ex;
     padding-left: 1em;
@@ -128,7 +164,7 @@ div.sidemenu ul {
 h1.title {
     background: url(python-xml-title.png) no-repeat;
     padding: 20px 0 0 160px;
-    height: 60px;
+    min-height: 60px;
     font-size: 200%;
 }
 
@@ -204,9 +240,14 @@ dt:before {
     content: "\00BB" " ";
 }
 
-ul {
+div.section ul {
     line-height: 1.5em;
-    margin-left: 1em;
+    padding-left: 1ex;
+    margin-left: 1.5em;
+}
+
+div.section li {
+    padding-left: 0;
 }
 
 ol {
@@ -224,8 +265,8 @@ div.eyecatcher, p.eyecatcher {
     text-align: center;
     font-size: 140%;
     line-height: 1.2em;
-    margin-left: 9em;
-    margin-right: 9em;
+    margin-left: 12%;
+    margin-right: 12%;
 }
 
 div.pagequote {
@@ -233,6 +274,7 @@ div.pagequote {
     top: 0;
     right: 0;
     padding: 10px 10px 0 0;
+    margin-left: 6em;
     text-align: right;
     font-size: 80%;
     color: #990000;
index 56f749579eaf049644671b8774c9db76186fd1dc..f9d653e74a99f58bcf4f5ea09bca50328aa805b7 100644 (file)
@@ -8,10 +8,26 @@
 <meta content="The lxml tutorial on XML processing with Python" name="description" />
 <meta content="XML processing with Python, lxml, lxml.etree, tutorial, ElementTree, Python, XML, HTML" name="keywords" />
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></div><h1 class="title">The lxml.etree Tutorial</h1>
 <table class="docinfo" frame="void" rules="none">
 <col class="docinfo-name" />
 <col class="docinfo-content" />
@@ -438,7 +454,7 @@ make sure only Element objects are returned, you can pass the
 <span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">Comment</span><span class="p">(</span><span class="s">"some comment"</span><span class="p">))</span>
 
 <span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">():</span>
-<span class="gp">... </span>    <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="nb">basestring</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="nb">basestring</span><span class="p">):</span>  <span class="c"># or 'str' in Python 3</span>
 <span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">"</span><span class="si">%s</span><span class="s"> - </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
 <span class="gp">... </span>    <span class="k">else</span><span class="p">:</span>
 <span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">"SPECIAL: </span><span class="si">%s</span><span class="s"> - </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
@@ -1163,7 +1179,7 @@ whereas the other two examples would raise a <tt class="docutils literal">StopIt
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 562ff89edae425eca670f591858581684f45fc12..4a7f9edd339771a2d03181468d710e1fec93d801 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>Validation with lxml</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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
@@ -50,7 +66,7 @@ available to the document as external subset.  You can retrieve the
 DTD from the parsed document using the <tt class="docutils literal">docinfo</tt> property of the
 result ElementTree object.  The internal subset is available as
 <tt class="docutils literal">internalDTD</tt>, the external subset is provided as <tt class="docutils literal">externalDTD</tt>.</p>
-<p>The third way way to activate DTD loading is with the
+<p>The third way to activate DTD loading is with the
 <tt class="docutils literal">attribute_defaults</tt> option, which loads the DTD and weaves
 attribute default values into the document.  Again, no validation is
 performed unless explicitly requested.</p>
@@ -540,7 +556,7 @@ reporting during validation.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 2586f67d98bce71fb0a14ba645662f183f37c546..9fc39904f01a793b3aec10feb6dccabed0a52ff7 100644 (file)
@@ -5,10 +5,26 @@
 <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
 <title>XPath and XSLT with lxml</title>
 <link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
+<script type="text/javascript">
+function trigger_menu(event) {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+    sidemenu.setAttribute("class", classes);
+    event.preventDefault();
+    event.stopPropagation();
+}
+function hide_menu() {
+    var sidemenu = document.getElementById("sidemenu");
+    var classes = sidemenu.getAttribute("class");
+    if (classes.indexOf(" visible") !== -1) {
+        sidemenu.setAttribute("class", classes.replace(" visible", ""));
+    }
+}
+</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
+<body onclick="hide_menu()">
 <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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 0-menu"><li class="menu title"><a href="changes-3.6.0.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" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><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#where-to-get-it">Where to get it</a></li><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-dev-sources">Building lxml from dev 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#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on 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#incremental-event-parsing">Incremental event parsing</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-or-wheel">Building an egg or wheel</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 6 1-menu"><li class="menu title"><a href="changes-3.6.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></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>
@@ -589,7 +605,7 @@ If you want to free it from memory, just do:</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-03-17.
+Generated on: 2016-07-24.
 
 </div>
 </body>
index 3c8b6ffedf00a068126784e3dead04fd57cf82a5..b03bb3ab51f1cb7380ac13cd43ec05fe2b56c009 100644 (file)
@@ -53,7 +53,7 @@ Function Reference
 ``fragment_fromstring(string, create_parent=False, guess_charset=False)``:
     Returns an HTML fragment from a string.  The fragment must contain
     just a single element, unless ``create_parent`` is given;
-    e.g,. ``fragment_fromstring(string, create_parent='div')`` will
+    e.g., ``fragment_fromstring(string, create_parent='div')`` will
     wrap the element in a ``<div>``.  If ``create_parent`` is true the
     default parent tag (div) is used.
 
index 2582d11b50f371419b3364695908ffb35dd435bc..5e9605c60561ca6c354fcac5d3283b886fb570d3 100644 (file)
@@ -204,7 +204,7 @@ parser.pxi
     Parsers for XML and HTML.  This is the main parser engine.  It's
     the reason why you can parse a document from various sources in
     two lines of Python code.  It's definitely not the right place to
-    start reading lxml's soure code.
+    start reading lxml's source code.
 
 parsertarget.pxi
     An ElementTree compatible parser target implementation based on
index e1ff4a06bb24bf064418e42eb6d850745df3ba1c..37519635d021750e04a64e82e44586eaea868555 100644 (file)
@@ -63,7 +63,7 @@ There are several functions available to parse HTML:
 ``fragment_fromstring(string, create_parent=False)``:
     Returns an HTML fragment from a string.  The fragment must contain
     just a single element, unless ``create_parent`` is given;
-    e.g,. ``fragment_fromstring(string, create_parent='div')`` will
+    e.g., ``fragment_fromstring(string, create_parent='div')`` will
     wrap the element in a ``<div>``.
 
 ``fragments_fromstring(string)``:
index c567be88af25dedc9b388b19b79f5cf089efe128..63fe6d7b34021d9bdb37eda54ddf3c0eb8ecc233 100644 (file)
@@ -157,8 +157,8 @@ Index <http://pypi.python.org/pypi/lxml/>`_ (PyPI).  It has the source
 that compiles on various platforms.  The source distribution is signed
 with `this key <pubkey.asc>`_.
 
-The latest version is `lxml 3.6.0`_, released 2016-03-17
-(`changes for 3.6.0`_).  `Older versions <#old-versions>`_
+The latest version is `lxml 3.6.1`_, released 2016-07-24
+(`changes for 3.6.1`_).  `Older versions <#old-versions>`_
 are listed below.
 
 Please take a look at the
@@ -243,7 +243,9 @@ See the web sites of lxml
 `3.5 <http://lxml.de/3.5/>`_
 and the `latest in-development version <http://lxml.de/dev/>`_.
 
-.. _`PDF documentation`: lxmldoc-3.6.0.pdf
+.. _`PDF documentation`: lxmldoc-3.6.1.pdf
+
+* `lxml 3.6.1`_, released 2016-07-24 (`changes for 3.6.1`_)
 
 * `lxml 3.6.0`_, released 2016-03-17 (`changes for 3.6.0`_)
 
@@ -263,6 +265,7 @@ and the `latest in-development version <http://lxml.de/dev/>`_.
 
 * `older releases <http://lxml.de/3.4/#old-versions>`_
 
+.. _`lxml 3.6.1`: /files/lxml-3.6.1.tgz
 .. _`lxml 3.6.0`: /files/lxml-3.6.0.tgz
 .. _`lxml 3.5.0`: /files/lxml-3.5.0.tgz
 .. _`lxml 3.5.0b1`: /files/lxml-3.5.0b1.tgz
@@ -272,6 +275,7 @@ and the `latest in-development version <http://lxml.de/dev/>`_.
 .. _`lxml 3.4.1`: /files/lxml-3.4.1.tgz
 .. _`lxml 3.4.0`: /files/lxml-3.4.0.tgz
 
+.. _`changes for 3.6.1`: /changes-3.6.1.html
 .. _`changes for 3.6.0`: /changes-3.6.0.html
 .. _`changes for 3.5.0`: /changes-3.5.0.html
 .. _`changes for 3.5.0b1`: /changes-3.5.0b1.html
index 07603d0056fe7e72197085d6aa6e8239fc919154..f6f1dec5e5937e3c3b02595a9e0df808f5fadd2b 100644 (file)
@@ -31,7 +31,7 @@ This is the case when:
 
 This means that the whole tree in such a condition can be freed.
 
-Detecting whether a Node is in a tree thas has no Proxies connected to
+Detecting whether a Node is in a tree that has no Proxies connected to
 it can be done by relying on Python's garbage collection
 algorithm. Each Proxy can have a reference to the Proxy that points to
 the top of the tree. In case of a document tree, this reference is to
index cc58da0a6ef22db83acef03b179135177432dafb..4161aaffbc2123fb2d92666140e2cbd213cea515 100644 (file)
@@ -1,3 +1,5 @@
+from __future__ import absolute_import
+
 from docstructure import SITE_STRUCTURE, HREF_MAP, BASENAME_MAP
 from lxml.etree import (parse, fromstring, ElementTree,
                         Element, SubElement, XPath, XML)
@@ -6,6 +8,7 @@ import re
 import sys
 import copy
 import shutil
+import textwrap
 import subprocess
 
 try:
@@ -21,8 +24,10 @@ RST2HTML_OPTIONS = " ".join([
     ])
 
 XHTML_NS = 'http://www.w3.org/1999/xhtml'
-htmlnsmap = {"h" : XHTML_NS}
+htmlnsmap = {"h": XHTML_NS}
 
+find_head = XPath("/h:html/h:head[1]", namespaces=htmlnsmap)
+find_body = XPath("/h:html/h:body[1]", namespaces=htmlnsmap)
 find_title = XPath("/h:html/h:head/h:title/text()", namespaces=htmlnsmap)
 find_title_tag = XPath("/h:html/h:head/h:title", namespaces=htmlnsmap)
 find_headings = XPath("//h:h1[not(@class)]//text()", namespaces=htmlnsmap)
@@ -33,6 +38,7 @@ find_page_end = XPath("/h:html/h:body/h:div[last()]", namespaces=htmlnsmap)
 find_words = re.compile('(\w+)').findall
 replace_invalid = re.compile(r'[-_/.\s\\]').sub
 
+
 def make_menu_section_head(section, menuroot):
     section_id = section + '-section'
     section_head = menuroot.xpath("//ul[@id=$section]/li", section=section_id)
@@ -45,6 +51,7 @@ def make_menu_section_head(section, menuroot):
         section_head = section_head[0]
     return section_head
 
+
 def build_menu(tree, basename, section_head):
     page_title = find_title(tree)
     if page_title:
@@ -54,6 +61,7 @@ def build_menu(tree, basename, section_head):
     build_menu_entry(page_title, basename+".html", section_head,
                      headings=find_headings(tree))
 
+
 def build_menu_entry(page_title, url, section_head, headings=None):
     page_id = replace_invalid(' ', os.path.splitext(url)[0]) + '-menu'
     ul = SubElement(section_head, "ul", {"class":"menu foreign", "id":page_id})
@@ -72,12 +80,13 @@ def build_menu_entry(page_title, url, section_head, headings=None):
                 ref = None
             if ref is None:
                 ref = '-'.join(find_words(replace_invalid(' ', heading.lower())))
-            a  = SubElement(li, "a", href=url+'#'+ref)
+            a = SubElement(li, "a", href=url+'#'+ref)
             a.text = heading
 
+
 def merge_menu(tree, menu, name):
     menu_root = copy.deepcopy(menu)
-    tree.getroot()[1][0].insert(0, menu_root) # html->body->div[class=document]
+    tree.getroot()[1][0].insert(0, menu_root)  # html->body->div[class=document]
     for el in menu_root.iter():
         tag = el.tag
         if tag[0] != '{':
@@ -93,6 +102,7 @@ def merge_menu(tree, menu, name):
                         replace("foreign", "current"))
     return tree
 
+
 def inject_flatter_button(tree):
     head = tree.xpath('h:head[1]', namespaces=htmlnsmap)[0]
     script = SubElement(head, '{%s}script' % XHTML_NS, type='text/javascript')
@@ -116,6 +126,7 @@ def inject_flatter_button(tree):
         '</p>'
         ))
 
+
 def inject_donate_buttons(lxml_path, rst2html_script, tree):
     command = ([sys.executable, rst2html_script]
                + RST2HTML_OPTIONS.split() + [os.path.join(lxml_path, 'README.rst')])
@@ -134,12 +145,14 @@ def inject_donate_buttons(lxml_path, rst2html_script, tree):
     last_div = tree.xpath('h:body//h:div//h:div', namespaces=htmlnsmap)[-1]
     last_div.addnext(legal)
 
+
 def rest2html(script, source_path, dest_path, stylesheet_url):
     command = ('%s %s %s --stylesheet=%s --link-stylesheet %s > %s' %
                (sys.executable, script, RST2HTML_OPTIONS,
                 stylesheet_url, source_path, dest_path))
     subprocess.call(command, shell=True)
 
+
 def convert_changelog(lxml_path, changelog_file_path, rst2html_script, stylesheet_url):
     f = open_file(os.path.join(lxml_path, 'CHANGES.txt'), 'r', encoding='utf-8')
     try:
@@ -164,6 +177,7 @@ def convert_changelog(lxml_path, changelog_file_path, rst2html_script, styleshee
     finally:
         out_file.close()
 
+
 def publish(dirname, lxml_path, release):
     if not os.path.exists(dirname):
         os.mkdir(dirname)
@@ -179,11 +193,31 @@ def publish(dirname, lxml_path, release):
     changelog_basename = 'changes-%s' % release
     href_map['Release Changelog'] = changelog_basename + '.html'
 
+    menu_js = textwrap.dedent('''
+    function trigger_menu(event) {
+        var sidemenu = document.getElementById("sidemenu");
+        var classes = sidemenu.getAttribute("class");
+        classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
+        sidemenu.setAttribute("class", classes);
+        event.preventDefault();
+        event.stopPropagation();
+    }
+    function hide_menu() {
+        var sidemenu = document.getElementById("sidemenu");
+        var classes = sidemenu.getAttribute("class");
+        if (classes.indexOf(" visible") !== -1) {
+            sidemenu.setAttribute("class", classes.replace(" visible", ""));
+        }
+    }
+    ''')
+
     trees = {}
-    menu = Element("div", {"class":"sidemenu"})
+    menu = Element("div", {'class': 'sidemenu', 'id': 'sidemenu'})
+    SubElement(menu, 'div', {'class': 'menutrigger', 'onclick': 'trigger_menu(event)'}).text = "Menu"
+    menu_div = SubElement(menu, 'div', {'class': 'menu'})
     # build HTML pages and parse them back
     for section, text_files in SITE_STRUCTURE:
-        section_head = make_menu_section_head(section, menu)
+        section_head = make_menu_section_head(section, menu_div)
         for filename in text_files:
             if filename.startswith('@'):
                 # special menu entry
@@ -213,7 +247,7 @@ def publish(dirname, lxml_path, release):
                       script, stylesheet_url)
 
     # generate sitemap from menu
-    sitemap = XML('''\
+    sitemap = XML(textwrap.dedent('''\
     <!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>
@@ -228,17 +262,22 @@ def publish(dirname, lxml_path, release):
         <h1>Sitemap of lxml.de - Processing XML and HTML with Python</h1>
       </body>
     </html>
-    '''.replace('    ', ' '))
+    '''))
     sitemap_menu = copy.deepcopy(menu)
     SubElement(SubElement(sitemap_menu[-1], 'li'), 'a', href='http://lxml.de/files/').text = 'Download files'
-    sitemap[-1].append(sitemap_menu) # append to body
+    sitemap[-1].append(sitemap_menu)  # append to body
     ElementTree(sitemap).write(os.path.join(dirname, 'sitemap.html'))
 
     # integrate sitemap into the menu
-    SubElement(SubElement(menu[-1], 'li'), 'a', href='http://lxml.de/sitemap.html').text = 'Sitemap'
+    SubElement(SubElement(menu_div[-1], 'li'), 'a', href='http://lxml.de/sitemap.html').text = 'Sitemap'
 
     # integrate menu into web pages
     for tree, basename, outpath in trees.itervalues():
+        head = find_head(tree)[0]
+        SubElement(head, 'script', type='text/javascript').text = menu_js
+        SubElement(head, 'meta', name='viewport', content="width=device-width, initial-scale=1")
+        find_body(tree)[0].set('onclick', 'hide_menu()')
+
         new_tree = merge_menu(tree, menu, basename)
         title = find_title_tag(new_tree)
         if title and title[0].text == 'lxml':
@@ -248,5 +287,6 @@ def publish(dirname, lxml_path, release):
                 heading[0].text = "lxml - XML and HTML with Python"
         new_tree.write(outpath)
 
+
 if __name__ == '__main__':
     publish(sys.argv[1], sys.argv[2], sys.argv[3])
index 01768a20dc18f1b8ed66b57e0fdfa47659081231..65ef25f39d8a680238f914671f4caa00a2027bf7 100644 (file)
@@ -308,7 +308,7 @@ To simplify the generation of trees even further, you can use the E-factory:
     >>> E = objectify.E
     >>> root = E.root(
     ...   E.a(5),
-    ...   E.b(6.1),
+    ...   E.b(6.21),
     ...   E.c(True),
     ...   E.d("how", tell="me")
     ... )
@@ -316,7 +316,7 @@ To simplify the generation of trees even further, you can use the E-factory:
     >>> print(etree.tostring(root, pretty_print=True))
     <root xmlns:py="http://codespeak.net/lxml/objectify/pytype">
       <a py:pytype="int">5</a>
-      <b py:pytype="float">6.1</b>
+      <b py:pytype="float">6.21</b>
       <c py:pytype="bool">true</c>
       <d py:pytype="str" tell="me">how</d>
     </root>
index f1cd95593912f30b62b3144193b36697297e5ae1..d71fba9e3ce08284284a2af81d471710ed43dbec 100644 (file)
@@ -665,7 +665,7 @@ Since then, lxml has matured a lot and has gotten much faster.  The iterparse
 variant now runs in 0.14 seconds, and if you remove the ``v.clear()``, it is
 even a little faster (which isn't the case for cElementTree).
 
-One of the many great tools in lxml is XPath, a swiss army knife for finding
+One of the many great tools in lxml is XPath, a Swiss army knife for finding
 things in XML documents.  It is possible to move the whole thing to a pure
 XPath implementation, which looks like this:
 
index 21ecec9eda1910778c26a43d827607c01c498582..be4138509954a2d7430fc416a399f4b0a8cdd2d4 100644 (file)
@@ -118,7 +118,7 @@ Interfacing with pulldom/minidom
 
 lxml.sax is a simple way to interface with the standard XML support in the
 Python library.  Note, however, that this is a one-way solution, as Python's
-DOM implementation connot generate SAX events from a DOM tree.
+DOM implementation cannot generate SAX events from a DOM tree.
 
 You can use xml.dom.pulldom to build a minidom from lxml:
 
index 82e2a0c438b60faa441c914e81ee5cec2a5458dc..71f3a5d7e5883b83c5eb6a43d55b52d279faeb00 100644 (file)
@@ -580,7 +580,7 @@ make sure only Element objects are returned, you can pass the
     >>> root.append(etree.Comment("some comment"))
 
     >>> for element in root.iter():
-    ...     if isinstance(element.tag, basestring):
+    ...     if isinstance(element.tag, basestring):  # or 'str' in Python 3
     ...         print("%s - %s" % (element.tag, element.text))
     ...     else:
     ...         print("SPECIAL: %s - %s" % (element, element.text))
index f9e319c7f8eff1443fa6b13fba5bcd8d353c4d2f..1915b4f1d0055fd1205968d9517c0afd54554cd5 100644 (file)
@@ -69,7 +69,7 @@ DTD from the parsed document using the ``docinfo`` property of the
 result ElementTree object.  The internal subset is available as
 ``internalDTD``, the external subset is provided as ``externalDTD``.
 
-The third way way to activate DTD loading is with the
+The third way to activate DTD loading is with the
 ``attribute_defaults`` option, which loads the DTD and weaves
 attribute default values into the document.  Again, no validation is
 performed unless explicitly requested.
index ee61c7e0801aa1463e0be1f86b0a7e053076c9bb..b0ade2f915bb51a4aa7d956792249d03e07c1b08 100644 (file)
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: lxml
-Version: 3.6.0
+Version: 3.6.1
 Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
 Home-page: http://lxml.de/
 Author: lxml dev team
@@ -36,23 +36,30 @@ Description: lxml is a Pythonic, mature binding for the libxml2 and libxslt libr
         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.6.0 (2016-03-17)
+        3.6.1 (2016-07-24)
         ==================
         
-        * GH#189: Static builds honour FTP proxy configurations when downloading
-          the external libs.  Patch by Youhei Sakurai.
+        Features added
+        --------------
         
-        * GH#187: Now supports (only) version 5.x and later of PyPy.
-          Patch by Armin Rigo.
+        * GH#180: Separate option ``inline_style`` for Cleaner that only removes ``style``
+          attributes instead of all styles.  Patch by Christian Pedersen.
         
-        * GH#186: Soupparser failed to process entities in Python 3.x.
-          Patch by Duncan Morris.
+        * GH#196: Windows build support for Python 3.5.  Contribution by Maximilian Hils.
         
-        * GH#185: Rare encoding related `TypeError` on import was fixed.
-          Patch by Petr Demin.
+        Bugs fixed
+        ----------
         
-        * GH#181: Direct support for `.rnc` files in `RelaxNG()` if `rnc2rng`
-          is installed.  Patch by Dirkjan Ochtman.
+        * GH#199: Exclude ``file`` fields from ``FormElement.form_values`` (as browsers do).
+          Patch by Tomas Divis.
+        
+        * GH#198, LP#1568167: Try to provide base URL from ``Resolver.resolve_string()``.
+          Patch by Michael van Tellingen.
+        
+        * GH#191: More accurate float serialisation in ``objectify.FloatElement``.
+          Patch by Holger Joukl.
+        
+        * LP#1551797: Repair XSLT error logging. Patch by Marcus Brinkmann.
         
         
         
index 7dd877205e1e279b0817fcccd71eb46e69916c4e..a6f22174b5e9577ecbe83d54a8de2831305b40a6 100644 (file)
@@ -58,7 +58,7 @@ doc/html/FAQ.html
 doc/html/api.html
 doc/html/build.html
 doc/html/capi.html
-doc/html/changes-3.6.0.html
+doc/html/changes-3.6.1.html
 doc/html/compatibility.html
 doc/html/credits.html
 doc/html/cssselect.html
index 1a1d7d2832b2872133c049862794acfbea384804..ba36272dbd8099387b1b7f516641d8a767728eb5 100644 (file)
@@ -1027,7 +1027,7 @@ class FormElement(HtmlElement):
                     "Unexpected tag: %r" % el)
                 if el.checkable and not el.checked:
                     continue
-                if el.type in ('submit', 'image', 'reset'):
+                if el.type in ('submit', 'image', 'reset', 'file'):
                     continue
                 value = el.value
                 if value is not None:
index 99fe42b11528f46ac440b27f58506fa54e236839..f0da1cd65ff3ecdbb2983e8d012303e19a0e0be4 100644 (file)
@@ -95,6 +95,7 @@ _find_external_links = etree.XPath(
      "descendant-or-self::x:a[normalize-space(@href) and substring(normalize-space(@href),1,1) != '#']"),
     namespaces={'x':XHTML_NAMESPACE})
 
+
 class Cleaner(object):
     """
     Instances cleans the document of each of the possible offending
@@ -112,7 +113,10 @@ class Cleaner(object):
         Removes any comments.
 
     ``style``:
-        Removes any style tags or attributes.
+        Removes any style tags.
+
+    ``inline_style``
+        Removes any style attributes.  Defaults to the value of the ``style`` option.
 
     ``links``:
         Removes any ``<link>`` tags
@@ -191,6 +195,7 @@ class Cleaner(object):
     javascript = True
     comments = True
     style = False
+    inline_style = None
     links = True
     meta = True
     page_structure = True
@@ -215,6 +220,8 @@ class Cleaner(object):
                 raise TypeError(
                     "Unknown parameter: %s=%r" % (name, value))
             setattr(self, name, value)
+        if self.inline_style is None and 'inline_style' not in kw:
+            self.inline_style = self.style
 
     # Used to lookup the primary URL for a given tag that is up for
     # removal:
@@ -280,9 +287,9 @@ class Cleaner(object):
                             del attrib[aname]
             doc.rewrite_links(self._remove_javascript_link,
                               resolve_base_href=False)
-            if not self.style:
-                # If we're deleting style then we don't have to remove JS links
-                # from styles, otherwise...
+            # If we're deleting style then we don't have to remove JS links
+            # from styles, otherwise...
+            if not self.inline_style:
                 for el in _find_styled_elements(doc):
                     old = el.get('style')
                     new = _css_javascript_re.sub('', old)
@@ -292,6 +299,7 @@ class Cleaner(object):
                         del el.attrib['style']
                     elif new != old:
                         el.set('style', new)
+            if not self.style:
                 for el in list(doc.iter('style')):
                     if el.get('type', '').lower().strip() == 'text/javascript':
                         el.drop_tree()
@@ -314,6 +322,7 @@ class Cleaner(object):
             kill_tags.add(etree.ProcessingInstruction)
         if self.style:
             kill_tags.add('style')
+        if self.inline_style:
             etree.strip_attributes(doc, 'style')
         if self.links:
             kill_tags.add('link')
index 4431c9802e2ce6998b30a3233fc62ff533352c91..c78ab4f133d4612d38fce14e8d473c4c217ed118 100644 (file)
   </body>
 </html>
 
->>> print(Cleaner(style=True, links=True, add_nofollow=True, page_structure=False, safe_attrs_only=False).clean_html(doc))
+>>> print(Cleaner(style=True, inline_style=True, links=True, add_nofollow=True, page_structure=False, safe_attrs_only=False).clean_html(doc))
 <html>
   <head>
   </head>
   </body>
 </html>
 
+>>> print(Cleaner(style=True, inline_style=False, links=True, add_nofollow=True, page_structure=False, safe_attrs_only=False).clean_html(doc))
+<html>
+  <head>
+  </head>
+  <body>
+    <a href="">a link</a>
+    <a href="">a control char link</a>
+    <a href="">data</a>
+    <a href="#">another link</a>
+    <p>a paragraph</p>
+    <div style="display: none">secret EVIL!</div>
+    of EVIL!
+    Password:
+    <a href="evil-site" rel="nofollow">spam spam SPAM!</a>
+    <a href="http://example.com" rel="author nofollow">Author</a>
+    <a href="http://example.com" rel="nofollow">Text</a>
+    <img src="evil!">
+  </body>
+</html>
+
 >>> print(Cleaner(links=False, page_structure=False, javascript=True, host_whitelist=['example.com'], whitelist_tags=None).clean_html(doc))
 <html>
   <head>
     <img src="evil!">
   </body>
 </html>
-
index 25c6529a0b06deed75096eef7973a521f1be0154..a86ff8a3fa523303c30ee4650c3d11df36dbe794 100644 (file)
@@ -28,6 +28,7 @@
 ...     <option value="3">number 3</option>
 ...     <option>number 4</option>
 ...   </select>
+...   <input type="file" name="file_field" value="nonsense_value">
 ...   <input type="submit" name="submit1" value="submit">
 ...   <input type="submit" name="submit2" value="submit">
 ...   <input type="reset" name="reset1">linksys
@@ -142,6 +143,7 @@ hidden_field=new+value&text_field=text_value&single_checkbox=on&single_checkbox2
 >>> for name, value in sorted(fields.items()):
 ...     print('%s: %r' % (name, value))
 check_group: <CheckboxValues {'1', '2', '3'} for checkboxes name='check_group'>
+file_field: 'nonsense_value'
 hidden_field: 'new value'
 radios: None
 reset1: None
index e97c2ac69143fc3a8f954031e32afc23b11fd587..853587ccd25bfe094f4c4af27593154e0b234104 100644 (file)
@@ -1,3 +1,3 @@
 #ifndef LXML_VERSION_STRING
-#define LXML_VERSION_STRING "3.6.0"
+#define LXML_VERSION_STRING "3.6.1"
 #endif
index 74fe758683ceb474fa7d4f99587ccd35ab9e1b9d..187b079f81e626d35016df1a6816632bc2c93ac1 100644 (file)
@@ -56,6 +56,7 @@ cdef extern from "libxml/tree.h":
         const_xmlChar* base
         const_xmlChar* cur
         const_xmlChar* end
+        const_char *filename
 
     ctypedef struct xmlParserInputBuffer:
         void* context
index 3ca35d7f4dfd61ac01ea6706d531a433e5eee7be..b5efd566f24084834e5570d9ca44f503900c7f62 100644 (file)
@@ -1,4 +1,5 @@
 from lxml.includes.tree cimport xmlDoc, xmlNode, xmlDict, xmlChar, const_xmlChar
+from lxml.includes.xmlerror cimport xmlGenericErrorFunc
 from lxml.includes.xpath cimport xmlXPathContext, xmlXPathFunction
 
 from libc.string cimport const_char
@@ -96,12 +97,14 @@ cdef extern from "libxslt/transform.h":
                                    xsltTemplate* templ,
                                    xsltStackElem* params) nogil
 
+
 cdef extern from "libxslt/xsltutils.h":
     cdef int xsltSaveResultToString(xmlChar** doc_txt_ptr,
                                     int* doc_txt_len,
                                     xmlDoc* result,
                                     xsltStylesheet* style) nogil
-    
+    cdef xmlGenericErrorFunc xsltGenericError
+    cdef void *xsltGenericErrorContext
     cdef void xsltSetGenericErrorFunc(
         void* ctxt, void (*handler)(void* ctxt, char* msg, ...)) nogil
     cdef void xsltSetTransformErrorFunc(
@@ -113,6 +116,7 @@ cdef extern from "libxslt/xsltutils.h":
     cdef void xsltSetCtxtParseOptions(
         xsltTransformContext* ctxt, int options)
 
+
 cdef extern from "libxslt/security.h":
     ctypedef struct xsltSecurityPrefs
     ctypedef enum xsltSecurityOption:
index eca8506264ce992b19bf99eb497f54f978a34f01..82dca0364d6d97048d97f8a349e5a97f45baf1a7 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.23.4 */
+/* Generated by Cython 0.23.5 */
 
 /* BEGIN: Cython Metadata
 {
@@ -85,7 +85,7 @@ END: Cython Metadata */
 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000)
     #error Cython requires Python 2.6+ or Python 3.2+.
 #else
-#define CYTHON_ABI "0_23_4"
+#define CYTHON_ABI "0_23_5"
 #include <stddef.h>
 #ifndef offsetof
 #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
@@ -969,7 +969,7 @@ struct __pyx_obj_4lxml_5etree__ListErrorLog {
 };
 
 
-/* "src/lxml/xmlerror.pxi":374
+/* "src/lxml/xmlerror.pxi":375
  * @cython.final
  * @cython.internal
  * cdef class _ErrorLogContext:             # <<<<<<<<<<<<<<
@@ -980,11 +980,13 @@ struct __pyx_obj_4lxml_5etree__ErrorLogContext {
   PyObject_HEAD
   xmlStructuredErrorFunc old_error_func;
   void *old_error_context;
+  xmlGenericErrorFunc old_xslt_error_func;
+  void *old_xslt_error_context;
 };
 
 
-/* "src/lxml/xmlerror.pxi":383
- *     cdef void* old_error_context
+/* "src/lxml/xmlerror.pxi":387
+ * 
  * 
  * cdef class _ErrorLog(_ListErrorLog):             # <<<<<<<<<<<<<<
  *     cdef list _logContexts
@@ -996,7 +998,7 @@ struct __pyx_obj_4lxml_5etree__ErrorLog {
 };
 
 
-/* "src/lxml/xmlerror.pxi":440
+/* "src/lxml/xmlerror.pxi":450
  *         self._entries.append(entry)
  * 
  * cdef class _DomainErrorLog(_ErrorLog):             # <<<<<<<<<<<<<<
@@ -1008,7 +1010,7 @@ struct __pyx_obj_4lxml_5etree__DomainErrorLog {
 };
 
 
-/* "src/lxml/xmlerror.pxi":449
+/* "src/lxml/xmlerror.pxi":459
  *             _ErrorLog.receive(self, entry)
  * 
  * cdef class _RotatingErrorLog(_ErrorLog):             # <<<<<<<<<<<<<<
@@ -1021,7 +1023,7 @@ struct __pyx_obj_4lxml_5etree__RotatingErrorLog {
 };
 
 
-/* "src/lxml/xmlerror.pxi":467
+/* "src/lxml/xmlerror.pxi":477
  *                 del self._entries[:offset]
  * 
  * cdef class PyErrorLog(_BaseErrorLog):             # <<<<<<<<<<<<<<
@@ -1794,7 +1796,7 @@ struct __pyx_obj_4lxml_5etree__ParserContext {
 };
 
 
-/* "src/lxml/parser.pxi":753
+/* "src/lxml/parser.pxi":764
  * 
  * @cython.internal
  * cdef class _BaseParser:             # <<<<<<<<<<<<<<
@@ -1822,7 +1824,7 @@ struct __pyx_obj_4lxml_5etree__BaseParser {
 };
 
 
-/* "src/lxml/parser.pxi":1182
+/* "src/lxml/parser.pxi":1193
  * ############################################################
  * 
  * cdef class _FeedParser(_BaseParser):             # <<<<<<<<<<<<<<
@@ -1835,11 +1837,11 @@ struct __pyx_obj_4lxml_5etree__FeedParser {
 };
 
 
-/* "src/lxml/parser.pxi":1392
+/* "src/lxml/parser.pxi":1403
  *     )
  * 
  * cdef class XMLParser(_FeedParser):             # <<<<<<<<<<<<<<
- *     u"""XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, XMLSchema schema=None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
+ *     u"""XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
  * 
  */
 struct __pyx_obj_4lxml_5etree_XMLParser {
@@ -1847,7 +1849,7 @@ struct __pyx_obj_4lxml_5etree_XMLParser {
 };
 
 
-/* "src/lxml/parser.pxi":1476
+/* "src/lxml/parser.pxi":1487
  * 
  * 
  * cdef class XMLPullParser(XMLParser):             # <<<<<<<<<<<<<<
@@ -1859,7 +1861,7 @@ struct __pyx_obj_4lxml_5etree_XMLPullParser {
 };
 
 
-/* "src/lxml/parser.pxi":1505
+/* "src/lxml/parser.pxi":1516
  * 
  * 
  * cdef class ETCompatXMLParser(XMLParser):             # <<<<<<<<<<<<<<
@@ -1871,7 +1873,7 @@ struct __pyx_obj_4lxml_5etree_ETCompatXMLParser {
 };
 
 
-/* "src/lxml/parser.pxi":1584
+/* "src/lxml/parser.pxi":1595
  *     )
  * 
  * cdef class HTMLParser(_FeedParser):             # <<<<<<<<<<<<<<
@@ -1883,7 +1885,7 @@ struct __pyx_obj_4lxml_5etree_HTMLParser {
 };
 
 
-/* "src/lxml/parser.pxi":1640
+/* "src/lxml/parser.pxi":1651
  * 
  * 
  * cdef class HTMLPullParser(HTMLParser):             # <<<<<<<<<<<<<<
@@ -2714,8 +2716,8 @@ struct __pyx_vtabstruct_4lxml_5etree__ListErrorLog {
 static struct __pyx_vtabstruct_4lxml_5etree__ListErrorLog *__pyx_vtabptr_4lxml_5etree__ListErrorLog;
 
 
-/* "src/lxml/xmlerror.pxi":383
- *     cdef void* old_error_context
+/* "src/lxml/xmlerror.pxi":387
+ * 
  * 
  * cdef class _ErrorLog(_ListErrorLog):             # <<<<<<<<<<<<<<
  *     cdef list _logContexts
@@ -2735,7 +2737,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
 static int __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5etree__ErrorLog *);
 
 
-/* "src/lxml/xmlerror.pxi":440
+/* "src/lxml/xmlerror.pxi":450
  *         self._entries.append(entry)
  * 
  * cdef class _DomainErrorLog(_ErrorLog):             # <<<<<<<<<<<<<<
@@ -2749,7 +2751,7 @@ struct __pyx_vtabstruct_4lxml_5etree__DomainErrorLog {
 static struct __pyx_vtabstruct_4lxml_5etree__DomainErrorLog *__pyx_vtabptr_4lxml_5etree__DomainErrorLog;
 
 
-/* "src/lxml/xmlerror.pxi":449
+/* "src/lxml/xmlerror.pxi":459
  *             _ErrorLog.receive(self, entry)
  * 
  * cdef class _RotatingErrorLog(_ErrorLog):             # <<<<<<<<<<<<<<
@@ -2763,7 +2765,7 @@ struct __pyx_vtabstruct_4lxml_5etree__RotatingErrorLog {
 static struct __pyx_vtabstruct_4lxml_5etree__RotatingErrorLog *__pyx_vtabptr_4lxml_5etree__RotatingErrorLog;
 
 
-/* "src/lxml/xmlerror.pxi":467
+/* "src/lxml/xmlerror.pxi":477
  *                 del self._entries[:offset]
  * 
  * cdef class PyErrorLog(_BaseErrorLog):             # <<<<<<<<<<<<<<
@@ -3382,7 +3384,7 @@ struct __pyx_vtabstruct_4lxml_5etree__ResolverContext {
 static struct __pyx_vtabstruct_4lxml_5etree__ResolverContext *__pyx_vtabptr_4lxml_5etree__ResolverContext;
 
 
-/* "src/lxml/parser.pxi":493
+/* "src/lxml/parser.pxi":504
  * 
  * @cython.internal
  * cdef class _ParserContext(_ResolverContext):             # <<<<<<<<<<<<<<
@@ -3560,7 +3562,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
 static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_obj_4lxml_5etree__FileReaderContext *, char *, int);
 
 
-/* "src/lxml/parser.pxi":753
+/* "src/lxml/parser.pxi":764
  * 
  * @cython.internal
  * cdef class _BaseParser:             # <<<<<<<<<<<<<<
@@ -3588,7 +3590,7 @@ static struct __pyx_vtabstruct_4lxml_5etree__BaseParser *__pyx_vtabptr_4lxml_5et
 static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_obj_4lxml_5etree__BaseParser *, xmlParserCtxt *);
 
 
-/* "src/lxml/parser.pxi":1182
+/* "src/lxml/parser.pxi":1193
  * ############################################################
  * 
  * cdef class _FeedParser(_BaseParser):             # <<<<<<<<<<<<<<
@@ -3604,11 +3606,11 @@ struct __pyx_vtabstruct_4lxml_5etree__FeedParser {
 static struct __pyx_vtabstruct_4lxml_5etree__FeedParser *__pyx_vtabptr_4lxml_5etree__FeedParser;
 
 
-/* "src/lxml/parser.pxi":1392
+/* "src/lxml/parser.pxi":1403
  *     )
  * 
  * cdef class XMLParser(_FeedParser):             # <<<<<<<<<<<<<<
- *     u"""XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, XMLSchema schema=None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
+ *     u"""XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
  * 
  */
 
@@ -3618,7 +3620,7 @@ struct __pyx_vtabstruct_4lxml_5etree_XMLParser {
 static struct __pyx_vtabstruct_4lxml_5etree_XMLParser *__pyx_vtabptr_4lxml_5etree_XMLParser;
 
 
-/* "src/lxml/parser.pxi":1476
+/* "src/lxml/parser.pxi":1487
  * 
  * 
  * cdef class XMLPullParser(XMLParser):             # <<<<<<<<<<<<<<
@@ -3632,7 +3634,7 @@ struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser {
 static struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *__pyx_vtabptr_4lxml_5etree_XMLPullParser;
 
 
-/* "src/lxml/parser.pxi":1505
+/* "src/lxml/parser.pxi":1516
  * 
  * 
  * cdef class ETCompatXMLParser(XMLParser):             # <<<<<<<<<<<<<<
@@ -3646,7 +3648,7 @@ struct __pyx_vtabstruct_4lxml_5etree_ETCompatXMLParser {
 static struct __pyx_vtabstruct_4lxml_5etree_ETCompatXMLParser *__pyx_vtabptr_4lxml_5etree_ETCompatXMLParser;
 
 
-/* "src/lxml/parser.pxi":1584
+/* "src/lxml/parser.pxi":1595
  *     )
  * 
  * cdef class HTMLParser(_FeedParser):             # <<<<<<<<<<<<<<
@@ -3660,7 +3662,7 @@ struct __pyx_vtabstruct_4lxml_5etree_HTMLParser {
 static struct __pyx_vtabstruct_4lxml_5etree_HTMLParser *__pyx_vtabptr_4lxml_5etree_HTMLParser;
 
 
-/* "src/lxml/parser.pxi":1640
+/* "src/lxml/parser.pxi":1651
  * 
  * 
  * cdef class HTMLPullParser(HTMLParser):             # <<<<<<<<<<<<<<
@@ -5597,15 +5599,15 @@ static char __pyx_k__45[] = "--";
 static char __pyx_k__48[] = "?>";
 static char __pyx_k__50[] = "]]>";
 static char __pyx_k__60[] = "_";
-static char __pyx_k__65[] = "'?>\n";
-static char __pyx_k__66[] = "\" ";
-static char __pyx_k__67[] = ">\n";
-static char __pyx_k__68[] = " [\n";
-static char __pyx_k__69[] = "]>\n";
-static char __pyx_k__75[] = "<";
-static char __pyx_k__76[] = ">";
-static char __pyx_k__77[] = "=\"";
-static char __pyx_k__83[] = "</";
+static char __pyx_k__66[] = "'?>\n";
+static char __pyx_k__67[] = "\" ";
+static char __pyx_k__68[] = ">\n";
+static char __pyx_k__69[] = " [\n";
+static char __pyx_k__70[] = "]>\n";
+static char __pyx_k__76[] = "<";
+static char __pyx_k__77[] = ">";
+static char __pyx_k__78[] = "=\"";
+static char __pyx_k__84[] = "</";
 static char __pyx_k_add[] = "add";
 static char __pyx_k_all[] = "__all__";
 static char __pyx_k_any[] = "any";
@@ -5644,9 +5646,9 @@ static char __pyx_k_xsl[] = "xsl";
 static char __pyx_k_HTML[] = "HTML";
 static char __pyx_k_UTF8[] = "UTF8";
 static char __pyx_k_XSLT[] = "XSLT";
-static char __pyx_k__104[] = ", ";
-static char __pyx_k__233[] = "(\"[^\"]*\")|('[^']*')";
-static char __pyx_k__235[] = "({[^}]+})";
+static char __pyx_k__105[] = ", ";
+static char __pyx_k__234[] = "(\"[^\"]*\")|('[^']*')";
+static char __pyx_k__236[] = "({[^}]+})";
 static char __pyx_k_args[] = "args";
 static char __pyx_k_beta[] = "beta";
 static char __pyx_k_c14n[] = "c14n";
@@ -6928,14 +6930,14 @@ static PyObject *__pyx_kp_s_XSLT_context_not_initialised;
 static PyObject *__pyx_n_s_XSLT_set_global_max_depth;
 static PyObject *__pyx_n_s_XSLT_strparam;
 static PyObject *__pyx_kp_s_XSLT_stylesheet_not_initialised;
-static PyObject *__pyx_kp_u__104;
+static PyObject *__pyx_kp_u__105;
 static PyObject *__pyx_kp_u__14;
 static PyObject *__pyx_kp_b__15;
 static PyObject *__pyx_kp_s__15;
 static PyObject *__pyx_kp_u__15;
 static PyObject *__pyx_kp_b__23;
-static PyObject *__pyx_kp_b__233;
-static PyObject *__pyx_kp_b__235;
+static PyObject *__pyx_kp_b__234;
+static PyObject *__pyx_kp_b__236;
 static PyObject *__pyx_kp_s__24;
 static PyObject *__pyx_kp_u__24;
 static PyObject *__pyx_kp_b__28;
@@ -6960,7 +6962,7 @@ static PyObject *__pyx_kp_b__48;
 static PyObject *__pyx_kp_b__50;
 static PyObject *__pyx_n_s__60;
 static PyObject *__pyx_n_u__60;
-static PyObject *__pyx_kp_u__76;
+static PyObject *__pyx_kp_u__77;
 static PyObject *__pyx_n_s_abspath;
 static PyObject *__pyx_n_s_accepted_domains;
 static PyObject *__pyx_n_s_access_control;
@@ -8255,11 +8257,11 @@ static PyObject *__pyx_slice__39;
 static PyObject *__pyx_slice__40;
 static PyObject *__pyx_slice__57;
 static PyObject *__pyx_slice__59;
-static PyObject *__pyx_slice__79;
 static PyObject *__pyx_slice__80;
-static PyObject *__pyx_slice__82;
-static PyObject *__pyx_slice__97;
+static PyObject *__pyx_slice__81;
+static PyObject *__pyx_slice__83;
 static PyObject *__pyx_slice__98;
+static PyObject *__pyx_slice__99;
 static PyObject *__pyx_tuple__10;
 static PyObject *__pyx_tuple__12;
 static PyObject *__pyx_tuple__16;
@@ -8292,14 +8294,14 @@ static PyObject *__pyx_tuple__61;
 static PyObject *__pyx_tuple__62;
 static PyObject *__pyx_tuple__63;
 static PyObject *__pyx_tuple__64;
-static PyObject *__pyx_tuple__70;
+static PyObject *__pyx_tuple__65;
 static PyObject *__pyx_tuple__71;
 static PyObject *__pyx_tuple__72;
 static PyObject *__pyx_tuple__73;
 static PyObject *__pyx_tuple__74;
-static PyObject *__pyx_tuple__78;
-static PyObject *__pyx_tuple__81;
-static PyObject *__pyx_tuple__84;
+static PyObject *__pyx_tuple__75;
+static PyObject *__pyx_tuple__79;
+static PyObject *__pyx_tuple__82;
 static PyObject *__pyx_tuple__85;
 static PyObject *__pyx_tuple__86;
 static PyObject *__pyx_tuple__87;
@@ -8312,12 +8314,12 @@ static PyObject *__pyx_tuple__93;
 static PyObject *__pyx_tuple__94;
 static PyObject *__pyx_tuple__95;
 static PyObject *__pyx_tuple__96;
-static PyObject *__pyx_tuple__99;
-static PyObject *__pyx_slice__102;
+static PyObject *__pyx_tuple__97;
+static PyObject *__pyx_slice__103;
 static PyObject *__pyx_tuple__100;
 static PyObject *__pyx_tuple__101;
-static PyObject *__pyx_tuple__103;
-static PyObject *__pyx_tuple__105;
+static PyObject *__pyx_tuple__102;
+static PyObject *__pyx_tuple__104;
 static PyObject *__pyx_tuple__106;
 static PyObject *__pyx_tuple__107;
 static PyObject *__pyx_tuple__108;
@@ -8333,126 +8335,127 @@ static PyObject *__pyx_tuple__117;
 static PyObject *__pyx_tuple__118;
 static PyObject *__pyx_tuple__119;
 static PyObject *__pyx_tuple__120;
-static PyObject *__pyx_tuple__122;
-static PyObject *__pyx_tuple__124;
-static PyObject *__pyx_tuple__126;
-static PyObject *__pyx_tuple__128;
-static PyObject *__pyx_tuple__130;
-static PyObject *__pyx_tuple__132;
+static PyObject *__pyx_tuple__121;
+static PyObject *__pyx_tuple__123;
+static PyObject *__pyx_tuple__125;
+static PyObject *__pyx_tuple__127;
+static PyObject *__pyx_tuple__129;
+static PyObject *__pyx_tuple__131;
 static PyObject *__pyx_tuple__133;
 static PyObject *__pyx_tuple__134;
-static PyObject *__pyx_tuple__136;
-static PyObject *__pyx_tuple__138;
+static PyObject *__pyx_tuple__135;
+static PyObject *__pyx_tuple__137;
 static PyObject *__pyx_tuple__139;
-static PyObject *__pyx_tuple__141;
+static PyObject *__pyx_tuple__140;
 static PyObject *__pyx_tuple__142;
-static PyObject *__pyx_tuple__144;
+static PyObject *__pyx_tuple__143;
 static PyObject *__pyx_tuple__145;
 static PyObject *__pyx_tuple__146;
 static PyObject *__pyx_tuple__147;
 static PyObject *__pyx_tuple__148;
 static PyObject *__pyx_tuple__149;
-static PyObject *__pyx_tuple__151;
+static PyObject *__pyx_tuple__150;
 static PyObject *__pyx_tuple__152;
-static PyObject *__pyx_tuple__154;
+static PyObject *__pyx_tuple__153;
 static PyObject *__pyx_tuple__155;
-static PyObject *__pyx_tuple__157;
+static PyObject *__pyx_tuple__156;
 static PyObject *__pyx_tuple__158;
-static PyObject *__pyx_tuple__160;
-static PyObject *__pyx_tuple__162;
+static PyObject *__pyx_tuple__159;
+static PyObject *__pyx_tuple__161;
 static PyObject *__pyx_tuple__163;
-static PyObject *__pyx_tuple__165;
+static PyObject *__pyx_tuple__164;
 static PyObject *__pyx_tuple__166;
-static PyObject *__pyx_tuple__168;
+static PyObject *__pyx_tuple__167;
 static PyObject *__pyx_tuple__169;
-static PyObject *__pyx_tuple__171;
+static PyObject *__pyx_tuple__170;
 static PyObject *__pyx_tuple__172;
-static PyObject *__pyx_tuple__174;
+static PyObject *__pyx_tuple__173;
 static PyObject *__pyx_tuple__175;
-static PyObject *__pyx_tuple__177;
+static PyObject *__pyx_tuple__176;
 static PyObject *__pyx_tuple__178;
-static PyObject *__pyx_tuple__180;
-static PyObject *__pyx_tuple__182;
-static PyObject *__pyx_tuple__184;
-static PyObject *__pyx_tuple__186;
-static PyObject *__pyx_tuple__188;
-static PyObject *__pyx_tuple__190;
+static PyObject *__pyx_tuple__179;
+static PyObject *__pyx_tuple__181;
+static PyObject *__pyx_tuple__183;
+static PyObject *__pyx_tuple__185;
+static PyObject *__pyx_tuple__187;
+static PyObject *__pyx_tuple__189;
 static PyObject *__pyx_tuple__191;
-static PyObject *__pyx_tuple__193;
+static PyObject *__pyx_tuple__192;
 static PyObject *__pyx_tuple__194;
-static PyObject *__pyx_tuple__196;
-static PyObject *__pyx_tuple__198;
-static PyObject *__pyx_tuple__200;
-static PyObject *__pyx_tuple__202;
+static PyObject *__pyx_tuple__195;
+static PyObject *__pyx_tuple__197;
+static PyObject *__pyx_tuple__199;
+static PyObject *__pyx_tuple__201;
 static PyObject *__pyx_tuple__203;
-static PyObject *__pyx_tuple__205;
-static PyObject *__pyx_tuple__207;
+static PyObject *__pyx_tuple__204;
+static PyObject *__pyx_tuple__206;
 static PyObject *__pyx_tuple__208;
-static PyObject *__pyx_tuple__210;
+static PyObject *__pyx_tuple__209;
 static PyObject *__pyx_tuple__211;
-static PyObject *__pyx_tuple__213;
+static PyObject *__pyx_tuple__212;
 static PyObject *__pyx_tuple__214;
-static PyObject *__pyx_tuple__216;
+static PyObject *__pyx_tuple__215;
 static PyObject *__pyx_tuple__217;
-static PyObject *__pyx_tuple__219;
-static PyObject *__pyx_tuple__221;
-static PyObject *__pyx_tuple__223;
+static PyObject *__pyx_tuple__218;
+static PyObject *__pyx_tuple__220;
+static PyObject *__pyx_tuple__222;
 static PyObject *__pyx_tuple__224;
-static PyObject *__pyx_tuple__226;
+static PyObject *__pyx_tuple__225;
 static PyObject *__pyx_tuple__227;
-static PyObject *__pyx_tuple__229;
-static PyObject *__pyx_tuple__231;
-static PyObject *__pyx_tuple__234;
-static PyObject *__pyx_tuple__236;
+static PyObject *__pyx_tuple__228;
+static PyObject *__pyx_tuple__230;
+static PyObject *__pyx_tuple__232;
+static PyObject *__pyx_tuple__235;
 static PyObject *__pyx_tuple__237;
-static PyObject *__pyx_tuple__239;
-static PyObject *__pyx_tuple__241;
+static PyObject *__pyx_tuple__238;
+static PyObject *__pyx_tuple__240;
 static PyObject *__pyx_tuple__242;
-static PyObject *__pyx_codeobj__121;
-static PyObject *__pyx_codeobj__123;
-static PyObject *__pyx_codeobj__125;
-static PyObject *__pyx_codeobj__127;
-static PyObject *__pyx_codeobj__129;
-static PyObject *__pyx_codeobj__131;
-static PyObject *__pyx_codeobj__135;
-static PyObject *__pyx_codeobj__137;
-static PyObject *__pyx_codeobj__140;
-static PyObject *__pyx_codeobj__143;
-static PyObject *__pyx_codeobj__150;
-static PyObject *__pyx_codeobj__153;
-static PyObject *__pyx_codeobj__156;
-static PyObject *__pyx_codeobj__159;
-static PyObject *__pyx_codeobj__161;
-static PyObject *__pyx_codeobj__164;
-static PyObject *__pyx_codeobj__167;
-static PyObject *__pyx_codeobj__170;
-static PyObject *__pyx_codeobj__173;
-static PyObject *__pyx_codeobj__176;
-static PyObject *__pyx_codeobj__179;
-static PyObject *__pyx_codeobj__181;
-static PyObject *__pyx_codeobj__183;
-static PyObject *__pyx_codeobj__185;
-static PyObject *__pyx_codeobj__187;
-static PyObject *__pyx_codeobj__189;
-static PyObject *__pyx_codeobj__192;
-static PyObject *__pyx_codeobj__195;
-static PyObject *__pyx_codeobj__197;
-static PyObject *__pyx_codeobj__199;
-static PyObject *__pyx_codeobj__201;
-static PyObject *__pyx_codeobj__204;
-static PyObject *__pyx_codeobj__206;
-static PyObject *__pyx_codeobj__209;
-static PyObject *__pyx_codeobj__212;
-static PyObject *__pyx_codeobj__215;
-static PyObject *__pyx_codeobj__218;
-static PyObject *__pyx_codeobj__220;
-static PyObject *__pyx_codeobj__222;
-static PyObject *__pyx_codeobj__225;
-static PyObject *__pyx_codeobj__228;
-static PyObject *__pyx_codeobj__230;
-static PyObject *__pyx_codeobj__232;
-static PyObject *__pyx_codeobj__238;
-static PyObject *__pyx_codeobj__240;
+static PyObject *__pyx_tuple__243;
+static PyObject *__pyx_codeobj__122;
+static PyObject *__pyx_codeobj__124;
+static PyObject *__pyx_codeobj__126;
+static PyObject *__pyx_codeobj__128;
+static PyObject *__pyx_codeobj__130;
+static PyObject *__pyx_codeobj__132;
+static PyObject *__pyx_codeobj__136;
+static PyObject *__pyx_codeobj__138;
+static PyObject *__pyx_codeobj__141;
+static PyObject *__pyx_codeobj__144;
+static PyObject *__pyx_codeobj__151;
+static PyObject *__pyx_codeobj__154;
+static PyObject *__pyx_codeobj__157;
+static PyObject *__pyx_codeobj__160;
+static PyObject *__pyx_codeobj__162;
+static PyObject *__pyx_codeobj__165;
+static PyObject *__pyx_codeobj__168;
+static PyObject *__pyx_codeobj__171;
+static PyObject *__pyx_codeobj__174;
+static PyObject *__pyx_codeobj__177;
+static PyObject *__pyx_codeobj__180;
+static PyObject *__pyx_codeobj__182;
+static PyObject *__pyx_codeobj__184;
+static PyObject *__pyx_codeobj__186;
+static PyObject *__pyx_codeobj__188;
+static PyObject *__pyx_codeobj__190;
+static PyObject *__pyx_codeobj__193;
+static PyObject *__pyx_codeobj__196;
+static PyObject *__pyx_codeobj__198;
+static PyObject *__pyx_codeobj__200;
+static PyObject *__pyx_codeobj__202;
+static PyObject *__pyx_codeobj__205;
+static PyObject *__pyx_codeobj__207;
+static PyObject *__pyx_codeobj__210;
+static PyObject *__pyx_codeobj__213;
+static PyObject *__pyx_codeobj__216;
+static PyObject *__pyx_codeobj__219;
+static PyObject *__pyx_codeobj__221;
+static PyObject *__pyx_codeobj__223;
+static PyObject *__pyx_codeobj__226;
+static PyObject *__pyx_codeobj__229;
+static PyObject *__pyx_codeobj__231;
+static PyObject *__pyx_codeobj__233;
+static PyObject *__pyx_codeobj__239;
+static PyObject *__pyx_codeobj__241;
 
 /* "src/lxml/lxml.etree.pyx":111
  * 
@@ -39359,7 +39362,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_28filter_from_warnings(st
  *         """
  *         return self.filter_from_level(ErrorLevels.WARNING)             # <<<<<<<<<<<<<<
  * 
- * @cython.final
+ * 
  */
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filter_from_level); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -39422,7 +39425,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_28filter_from_warnings(st
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":385
+/* "src/lxml/xmlerror.pxi":389
  * cdef class _ErrorLog(_ListErrorLog):
  *     cdef list _logContexts
  *     def __cinit__(self):             # <<<<<<<<<<<<<<
@@ -39455,14 +39458,14 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog___cinit__(struct __pyx_obj_4lxml_5et
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__cinit__", 0);
 
-  /* "src/lxml/xmlerror.pxi":386
+  /* "src/lxml/xmlerror.pxi":390
  *     cdef list _logContexts
  *     def __cinit__(self):
  *         self._logContexts = []             # <<<<<<<<<<<<<<
  * 
  *     def __init__(self):
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_logContexts);
@@ -39470,7 +39473,7 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog___cinit__(struct __pyx_obj_4lxml_5et
   __pyx_v_self->_logContexts = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":385
+  /* "src/lxml/xmlerror.pxi":389
  * cdef class _ErrorLog(_ListErrorLog):
  *     cdef list _logContexts
  *     def __cinit__(self):             # <<<<<<<<<<<<<<
@@ -39490,7 +39493,7 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog___cinit__(struct __pyx_obj_4lxml_5et
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":388
+/* "src/lxml/xmlerror.pxi":392
  *         self._logContexts = []
  * 
  *     def __init__(self):             # <<<<<<<<<<<<<<
@@ -39528,16 +39531,16 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog_2__init__(struct __pyx_obj_4lxml_5et
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "src/lxml/xmlerror.pxi":389
+  /* "src/lxml/xmlerror.pxi":393
  * 
  *     def __init__(self):
  *         _ListErrorLog.__init__(self, [], None, None)             # <<<<<<<<<<<<<<
  * 
  *     @cython.final
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   __pyx_t_5 = 0;
@@ -39551,7 +39554,7 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog_2__init__(struct __pyx_obj_4lxml_5et
       __pyx_t_5 = 1;
     }
   }
-  __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   if (__pyx_t_4) {
     __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -39568,13 +39571,13 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog_2__init__(struct __pyx_obj_4lxml_5et
   __Pyx_GIVEREF(Py_None);
   PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, Py_None);
   __pyx_t_3 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":388
+  /* "src/lxml/xmlerror.pxi":392
  *         self._logContexts = []
  * 
  *     def __init__(self):             # <<<<<<<<<<<<<<
@@ -39598,7 +39601,7 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog_2__init__(struct __pyx_obj_4lxml_5et
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":392
+/* "src/lxml/xmlerror.pxi":396
  * 
  *     @cython.final
  *     cdef int __enter__(self) except -1:             # <<<<<<<<<<<<<<
@@ -39615,18 +39618,18 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog___enter__(struct __pyx_obj_4lxml_5etr
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__enter__", 0);
 
-  /* "src/lxml/xmlerror.pxi":393
+  /* "src/lxml/xmlerror.pxi":397
  *     @cython.final
  *     cdef int __enter__(self) except -1:
  *         return self.connect()             # <<<<<<<<<<<<<<
  * 
  *     def __exit__(self, *args):
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_connect(__pyx_v_self); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_connect(__pyx_v_self); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":392
+  /* "src/lxml/xmlerror.pxi":396
  * 
  *     @cython.final
  *     cdef int __enter__(self) except -1:             # <<<<<<<<<<<<<<
@@ -39643,7 +39646,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog___enter__(struct __pyx_obj_4lxml_5etr
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":395
+/* "src/lxml/xmlerror.pxi":399
  *         return self.connect()
  * 
  *     def __exit__(self, *args):             # <<<<<<<<<<<<<<
@@ -39678,16 +39681,16 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_4__exit__(struct __pyx_obj_4lx
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__exit__", 0);
 
-  /* "src/lxml/xmlerror.pxi":397
+  /* "src/lxml/xmlerror.pxi":401
  *     def __exit__(self, *args):
  *         #  TODO: make this a cdef function when Cython supports it
  *         self.disconnect()             # <<<<<<<<<<<<<<
  * 
  *     @cython.final
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(__pyx_v_self); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(__pyx_v_self); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/xmlerror.pxi":395
+  /* "src/lxml/xmlerror.pxi":399
  *         return self.connect()
  * 
  *     def __exit__(self, *args):             # <<<<<<<<<<<<<<
@@ -39707,7 +39710,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_4__exit__(struct __pyx_obj_4lx
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":400
+/* "src/lxml/xmlerror.pxi":404
  * 
  *     @cython.final
  *     cdef int connect(self) except -1:             # <<<<<<<<<<<<<<
@@ -39726,7 +39729,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("connect", 0);
 
-  /* "src/lxml/xmlerror.pxi":401
+  /* "src/lxml/xmlerror.pxi":405
  *     @cython.final
  *     cdef int connect(self) except -1:
  *         self._first_error = None             # <<<<<<<<<<<<<<
@@ -39739,7 +39742,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
   __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._first_error));
   __pyx_v_self->__pyx_base.__pyx_base._first_error = ((struct __pyx_obj_4lxml_5etree__LogEntry *)Py_None);
 
-  /* "src/lxml/xmlerror.pxi":402
+  /* "src/lxml/xmlerror.pxi":406
  *     cdef int connect(self) except -1:
  *         self._first_error = None
  *         del self._entries[:]             # <<<<<<<<<<<<<<
@@ -39748,66 +39751,93 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
  */
   if (unlikely(__pyx_v_self->__pyx_base._entries == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  if (__Pyx_PyObject_DelSlice(__pyx_v_self->__pyx_base._entries, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_DelSlice(__pyx_v_self->__pyx_base._entries, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/xmlerror.pxi":404
+  /* "src/lxml/xmlerror.pxi":408
  *         del self._entries[:]
  * 
  *         cdef _ErrorLogContext context = _ErrorLogContext.__new__(_ErrorLogContext)             # <<<<<<<<<<<<<<
  *         context.old_error_func = xmlerror.xmlStructuredError
  *         context.old_error_context = xmlerror.xmlStructuredErrorContext
  */
-  __pyx_t_1 = __pyx_tp_new_4lxml_5etree__ErrorLogContext(((PyTypeObject *)__pyx_ptype_4lxml_5etree__ErrorLogContext), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_tp_new_4lxml_5etree__ErrorLogContext(((PyTypeObject *)__pyx_ptype_4lxml_5etree__ErrorLogContext), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__ErrorLogContext)))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__ErrorLogContext)))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ErrorLogContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":405
+  /* "src/lxml/xmlerror.pxi":409
  * 
  *         cdef _ErrorLogContext context = _ErrorLogContext.__new__(_ErrorLogContext)
  *         context.old_error_func = xmlerror.xmlStructuredError             # <<<<<<<<<<<<<<
  *         context.old_error_context = xmlerror.xmlStructuredErrorContext
- *         self._logContexts.append(context)
+ *         context.old_xslt_error_func = xslt.xsltGenericError
  */
   __pyx_v_context->old_error_func = xmlStructuredError;
 
-  /* "src/lxml/xmlerror.pxi":406
+  /* "src/lxml/xmlerror.pxi":410
  *         cdef _ErrorLogContext context = _ErrorLogContext.__new__(_ErrorLogContext)
  *         context.old_error_func = xmlerror.xmlStructuredError
  *         context.old_error_context = xmlerror.xmlStructuredErrorContext             # <<<<<<<<<<<<<<
- *         self._logContexts.append(context)
- *         xmlerror.xmlSetStructuredErrorFunc(
+ *         context.old_xslt_error_func = xslt.xsltGenericError
+ *         context.old_xslt_error_context = xslt.xsltGenericErrorContext
  */
   __pyx_v_context->old_error_context = xmlStructuredErrorContext;
 
-  /* "src/lxml/xmlerror.pxi":407
+  /* "src/lxml/xmlerror.pxi":411
  *         context.old_error_func = xmlerror.xmlStructuredError
  *         context.old_error_context = xmlerror.xmlStructuredErrorContext
+ *         context.old_xslt_error_func = xslt.xsltGenericError             # <<<<<<<<<<<<<<
+ *         context.old_xslt_error_context = xslt.xsltGenericErrorContext
+ *         self._logContexts.append(context)
+ */
+  __pyx_v_context->old_xslt_error_func = xsltGenericError;
+
+  /* "src/lxml/xmlerror.pxi":412
+ *         context.old_error_context = xmlerror.xmlStructuredErrorContext
+ *         context.old_xslt_error_func = xslt.xsltGenericError
+ *         context.old_xslt_error_context = xslt.xsltGenericErrorContext             # <<<<<<<<<<<<<<
+ *         self._logContexts.append(context)
+ *         xmlerror.xmlSetStructuredErrorFunc(
+ */
+  __pyx_v_context->old_xslt_error_context = xsltGenericErrorContext;
+
+  /* "src/lxml/xmlerror.pxi":413
+ *         context.old_xslt_error_func = xslt.xsltGenericError
+ *         context.old_xslt_error_context = xslt.xsltGenericErrorContext
  *         self._logContexts.append(context)             # <<<<<<<<<<<<<<
  *         xmlerror.xmlSetStructuredErrorFunc(
  *             <void*>self, <xmlerror.xmlStructuredErrorFunc>_receiveError)
  */
   if (unlikely(__pyx_v_self->_logContexts == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
-    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_self->_logContexts, ((PyObject *)__pyx_v_context)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_self->_logContexts, ((PyObject *)__pyx_v_context)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/xmlerror.pxi":408
- *         context.old_error_context = xmlerror.xmlStructuredErrorContext
+  /* "src/lxml/xmlerror.pxi":414
+ *         context.old_xslt_error_context = xslt.xsltGenericErrorContext
  *         self._logContexts.append(context)
  *         xmlerror.xmlSetStructuredErrorFunc(             # <<<<<<<<<<<<<<
  *             <void*>self, <xmlerror.xmlStructuredErrorFunc>_receiveError)
- *         return 0
+ *         xslt.xsltSetGenericErrorFunc(
  */
   xmlSetStructuredErrorFunc(((void *)__pyx_v_self), ((xmlStructuredErrorFunc)__pyx_f_4lxml_5etree__receiveError));
 
-  /* "src/lxml/xmlerror.pxi":410
+  /* "src/lxml/xmlerror.pxi":416
  *         xmlerror.xmlSetStructuredErrorFunc(
  *             <void*>self, <xmlerror.xmlStructuredErrorFunc>_receiveError)
+ *         xslt.xsltSetGenericErrorFunc(             # <<<<<<<<<<<<<<
+ *                 <void*>self, <xmlerror.xmlGenericErrorFunc>_receiveXSLTError)
+ *         return 0
+ */
+  xsltSetGenericErrorFunc(((void *)__pyx_v_self), ((xmlGenericErrorFunc)__pyx_f_4lxml_5etree__receiveXSLTError));
+
+  /* "src/lxml/xmlerror.pxi":418
+ *         xslt.xsltSetGenericErrorFunc(
+ *                 <void*>self, <xmlerror.xmlGenericErrorFunc>_receiveXSLTError)
  *         return 0             # <<<<<<<<<<<<<<
  * 
  *     @cython.final
@@ -39815,7 +39845,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":400
+  /* "src/lxml/xmlerror.pxi":404
  * 
  *     @cython.final
  *     cdef int connect(self) except -1:             # <<<<<<<<<<<<<<
@@ -39834,12 +39864,12 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":413
+/* "src/lxml/xmlerror.pxi":421
  * 
  *     @cython.final
  *     cdef int disconnect(self) except -1:             # <<<<<<<<<<<<<<
  *         cdef _ErrorLogContext context = self._logContexts.pop()
- *         xmlerror.xmlSetStructuredErrorFunc(
+ *         xslt.xsltSetGenericErrorFunc(
  */
 
 static int __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self) {
@@ -39852,33 +39882,42 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5et
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("disconnect", 0);
 
-  /* "src/lxml/xmlerror.pxi":414
+  /* "src/lxml/xmlerror.pxi":422
  *     @cython.final
  *     cdef int disconnect(self) except -1:
  *         cdef _ErrorLogContext context = self._logContexts.pop()             # <<<<<<<<<<<<<<
- *         xmlerror.xmlSetStructuredErrorFunc(
- *             context.old_error_context, context.old_error_func)
+ *         xslt.xsltSetGenericErrorFunc(
+ *             context.old_xslt_error_context, context.old_xslt_error_func)
  */
   if (unlikely(__pyx_v_self->_logContexts == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "pop");
-    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_1 = __Pyx_PyList_Pop(__pyx_v_self->_logContexts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyList_Pop(__pyx_v_self->_logContexts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__ErrorLogContext))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__ErrorLogContext))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ErrorLogContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":415
+  /* "src/lxml/xmlerror.pxi":423
  *     cdef int disconnect(self) except -1:
  *         cdef _ErrorLogContext context = self._logContexts.pop()
+ *         xslt.xsltSetGenericErrorFunc(             # <<<<<<<<<<<<<<
+ *             context.old_xslt_error_context, context.old_xslt_error_func)
+ *         xmlerror.xmlSetStructuredErrorFunc(
+ */
+  xsltSetGenericErrorFunc(__pyx_v_context->old_xslt_error_context, __pyx_v_context->old_xslt_error_func);
+
+  /* "src/lxml/xmlerror.pxi":425
+ *         xslt.xsltSetGenericErrorFunc(
+ *             context.old_xslt_error_context, context.old_xslt_error_func)
  *         xmlerror.xmlSetStructuredErrorFunc(             # <<<<<<<<<<<<<<
  *             context.old_error_context, context.old_error_func)
  *         return 0
  */
   xmlSetStructuredErrorFunc(__pyx_v_context->old_error_context, __pyx_v_context->old_error_func);
 
-  /* "src/lxml/xmlerror.pxi":417
+  /* "src/lxml/xmlerror.pxi":427
  *         xmlerror.xmlSetStructuredErrorFunc(
  *             context.old_error_context, context.old_error_func)
  *         return 0             # <<<<<<<<<<<<<<
@@ -39888,12 +39927,12 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5et
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":413
+  /* "src/lxml/xmlerror.pxi":421
  * 
  *     @cython.final
  *     cdef int disconnect(self) except -1:             # <<<<<<<<<<<<<<
  *         cdef _ErrorLogContext context = self._logContexts.pop()
- *         xmlerror.xmlSetStructuredErrorFunc(
+ *         xslt.xsltSetGenericErrorFunc(
  */
 
   /* function exit code */
@@ -39907,7 +39946,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5et
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":419
+/* "src/lxml/xmlerror.pxi":429
  *         return 0
  * 
  *     cpdef clear(self):             # <<<<<<<<<<<<<<
@@ -39931,7 +39970,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
   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 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_clear); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_clear); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 429; __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_9_ErrorLog_7clear)) {
       __Pyx_XDECREF(__pyx_r);
@@ -39947,10 +39986,10 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -39962,7 +40001,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "src/lxml/xmlerror.pxi":420
+  /* "src/lxml/xmlerror.pxi":430
  * 
  *     cpdef clear(self):
  *         self._first_error = None             # <<<<<<<<<<<<<<
@@ -39975,7 +40014,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
   __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._first_error));
   __pyx_v_self->__pyx_base.__pyx_base._first_error = ((struct __pyx_obj_4lxml_5etree__LogEntry *)Py_None);
 
-  /* "src/lxml/xmlerror.pxi":421
+  /* "src/lxml/xmlerror.pxi":431
  *     cpdef clear(self):
  *         self._first_error = None
  *         self.last_error = None             # <<<<<<<<<<<<<<
@@ -39988,7 +40027,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
   __Pyx_DECREF(__pyx_v_self->__pyx_base.__pyx_base.last_error);
   __pyx_v_self->__pyx_base.__pyx_base.last_error = Py_None;
 
-  /* "src/lxml/xmlerror.pxi":422
+  /* "src/lxml/xmlerror.pxi":432
  *         self._first_error = None
  *         self.last_error = None
  *         self._offset = 0             # <<<<<<<<<<<<<<
@@ -39997,7 +40036,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
  */
   __pyx_v_self->__pyx_base._offset = 0;
 
-  /* "src/lxml/xmlerror.pxi":423
+  /* "src/lxml/xmlerror.pxi":433
  *         self.last_error = None
  *         self._offset = 0
  *         del self._entries[:]             # <<<<<<<<<<<<<<
@@ -40006,11 +40045,11 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
  */
   if (unlikely(__pyx_v_self->__pyx_base._entries == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  if (__Pyx_PyObject_DelSlice(__pyx_v_self->__pyx_base._entries, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_DelSlice(__pyx_v_self->__pyx_base._entries, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/xmlerror.pxi":419
+  /* "src/lxml/xmlerror.pxi":429
  *         return 0
  * 
  *     cpdef clear(self):             # <<<<<<<<<<<<<<
@@ -40056,7 +40095,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_6clear(struct __pyx_obj_4lxml_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("clear", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_clear(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_clear(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -40073,7 +40112,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_6clear(struct __pyx_obj_4lxml_
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":425
+/* "src/lxml/xmlerror.pxi":435
  *         del self._entries[:]
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
@@ -40097,7 +40136,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
   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 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 435; __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_9_ErrorLog_9copy)) {
       __Pyx_XDECREF(__pyx_r);
@@ -40113,10 +40152,10 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -40128,7 +40167,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "src/lxml/xmlerror.pxi":428
+  /* "src/lxml/xmlerror.pxi":438
  *         u"""Creates a shallow copy of this error log and the list of entries.
  *         """
  *         return _ListErrorLog(             # <<<<<<<<<<<<<<
@@ -40137,7 +40176,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "src/lxml/xmlerror.pxi":429
+  /* "src/lxml/xmlerror.pxi":439
  *         """
  *         return _ListErrorLog(
  *             self._entries[self._offset:],             # <<<<<<<<<<<<<<
@@ -40146,19 +40185,19 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
  */
   if (unlikely(__pyx_v_self->__pyx_base._entries == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_self->__pyx_base._entries, __pyx_v_self->__pyx_base._offset, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_self->__pyx_base._entries, __pyx_v_self->__pyx_base._offset, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "src/lxml/xmlerror.pxi":428
+  /* "src/lxml/xmlerror.pxi":438
  *         u"""Creates a shallow copy of this error log and the list of entries.
  *         """
  *         return _ListErrorLog(             # <<<<<<<<<<<<<<
  *             self._entries[self._offset:],
  *             self._first_error, self.last_error)
  */
-  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
@@ -40169,14 +40208,14 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
   __Pyx_GIVEREF(__pyx_v_self->__pyx_base.__pyx_base.last_error);
   PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->__pyx_base.__pyx_base.last_error);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":425
+  /* "src/lxml/xmlerror.pxi":435
  *         del self._entries[:]
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
@@ -40221,7 +40260,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_8copy(struct __pyx_obj_4lxml_5
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("copy", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -40238,7 +40277,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_8copy(struct __pyx_obj_4lxml_5
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":432
+/* "src/lxml/xmlerror.pxi":442
  *             self._first_error, self.last_error)
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -40269,7 +40308,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_10__iter__(struct __pyx_obj_4l
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__iter__", 0);
 
-  /* "src/lxml/xmlerror.pxi":433
+  /* "src/lxml/xmlerror.pxi":443
  * 
  *     def __iter__(self):
  *         return iter(self._entries[self._offset:])             # <<<<<<<<<<<<<<
@@ -40279,18 +40318,18 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_10__iter__(struct __pyx_obj_4l
   __Pyx_XDECREF(__pyx_r);
   if (unlikely(__pyx_v_self->__pyx_base._entries == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_self->__pyx_base._entries, __pyx_v_self->__pyx_base._offset, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_self->__pyx_base._entries, __pyx_v_self->__pyx_base._offset, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":432
+  /* "src/lxml/xmlerror.pxi":442
  *             self._first_error, self.last_error)
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -40310,7 +40349,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_10__iter__(struct __pyx_obj_4l
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":435
+/* "src/lxml/xmlerror.pxi":445
  *         return iter(self._entries[self._offset:])
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
@@ -40339,7 +40378,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
   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 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 445; __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_9_ErrorLog_13receive)) {
       __Pyx_XDECREF(__pyx_r);
@@ -40355,16 +40394,16 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
         }
       }
       if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_entry)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_entry)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
       } else {
-        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
         __Pyx_INCREF(((PyObject *)__pyx_v_entry));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
         PyTuple_SET_ITEM(__pyx_t_5, 0+1, ((PyObject *)__pyx_v_entry));
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       }
@@ -40377,7 +40416,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "src/lxml/xmlerror.pxi":436
+  /* "src/lxml/xmlerror.pxi":446
  * 
  *     cpdef receive(self, _LogEntry entry):
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:             # <<<<<<<<<<<<<<
@@ -40396,7 +40435,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_6) {
 
-    /* "src/lxml/xmlerror.pxi":437
+    /* "src/lxml/xmlerror.pxi":447
  *     cpdef receive(self, _LogEntry entry):
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  *             self._first_error = entry             # <<<<<<<<<<<<<<
@@ -40409,7 +40448,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
     __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._first_error));
     __pyx_v_self->__pyx_base.__pyx_base._first_error = __pyx_v_entry;
 
-    /* "src/lxml/xmlerror.pxi":436
+    /* "src/lxml/xmlerror.pxi":446
  * 
  *     cpdef receive(self, _LogEntry entry):
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:             # <<<<<<<<<<<<<<
@@ -40418,7 +40457,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":438
+  /* "src/lxml/xmlerror.pxi":448
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  *             self._first_error = entry
  *         self._entries.append(entry)             # <<<<<<<<<<<<<<
@@ -40427,11 +40466,11 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
  */
   if (unlikely(__pyx_v_self->__pyx_base._entries == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
-    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_self->__pyx_base._entries, ((PyObject *)__pyx_v_entry)); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_self->__pyx_base._entries, ((PyObject *)__pyx_v_entry)); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/xmlerror.pxi":435
+  /* "src/lxml/xmlerror.pxi":445
  *         return iter(self._entries[self._offset:])
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
@@ -40465,7 +40504,7 @@ static PyObject *__pyx_pw_4lxml_5etree_9_ErrorLog_13receive(PyObject *__pyx_v_se
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("receive (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "entry", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "entry", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_pf_4lxml_5etree_9_ErrorLog_12receive(((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self), ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_entry));
 
   /* function exit code */
@@ -40486,7 +40525,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_12receive(struct __pyx_obj_4lx
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("receive", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_receive(__pyx_v_self, __pyx_v_entry, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_receive(__pyx_v_self, __pyx_v_entry, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -40503,7 +40542,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_12receive(struct __pyx_obj_4lx
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":441
+/* "src/lxml/xmlerror.pxi":451
  * 
  * cdef class _DomainErrorLog(_ErrorLog):
  *     def __init__(self, domains):             # <<<<<<<<<<<<<<
@@ -40539,7 +40578,7 @@ static int __pyx_pw_4lxml_5etree_15_DomainErrorLog_1__init__(PyObject *__pyx_v_s
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 441; __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[1]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -40550,7 +40589,7 @@ static int __pyx_pw_4lxml_5etree_15_DomainErrorLog_1__init__(PyObject *__pyx_v_s
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._DomainErrorLog.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -40575,14 +40614,14 @@ static int __pyx_pf_4lxml_5etree_15_DomainErrorLog___init__(struct __pyx_obj_4lx
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "src/lxml/xmlerror.pxi":442
+  /* "src/lxml/xmlerror.pxi":452
  * cdef class _DomainErrorLog(_ErrorLog):
  *     def __init__(self, domains):
  *         _ErrorLog.__init__(self)             # <<<<<<<<<<<<<<
  *         self._accepted_domains = tuple(domains)
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -40595,35 +40634,35 @@ static int __pyx_pf_4lxml_5etree_15_DomainErrorLog___init__(struct __pyx_obj_4lx
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self));
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":443
+  /* "src/lxml/xmlerror.pxi":453
  *     def __init__(self, domains):
  *         _ErrorLog.__init__(self)
  *         self._accepted_domains = tuple(domains)             # <<<<<<<<<<<<<<
  * 
  *     cpdef receive(self, _LogEntry entry):
  */
-  __pyx_t_1 = PySequence_Tuple(__pyx_v_domains); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PySequence_Tuple(__pyx_v_domains); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_accepted_domains, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_accepted_domains, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":441
+  /* "src/lxml/xmlerror.pxi":451
  * 
  * cdef class _DomainErrorLog(_ErrorLog):
  *     def __init__(self, domains):             # <<<<<<<<<<<<<<
@@ -40646,7 +40685,7 @@ static int __pyx_pf_4lxml_5etree_15_DomainErrorLog___init__(struct __pyx_obj_4lx
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":445
+/* "src/lxml/xmlerror.pxi":455
  *         self._accepted_domains = tuple(domains)
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
@@ -40673,7 +40712,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_DomainErrorLog_receive(struct __pyx_obj
   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 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __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_15_DomainErrorLog_3receive)) {
       __Pyx_XDECREF(__pyx_r);
@@ -40689,16 +40728,16 @@ static PyObject *__pyx_f_4lxml_5etree_15_DomainErrorLog_receive(struct __pyx_obj
         }
       }
       if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_entry)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_entry)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
       } else {
-        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
         __Pyx_INCREF(((PyObject *)__pyx_v_entry));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
         PyTuple_SET_ITEM(__pyx_t_5, 0+1, ((PyObject *)__pyx_v_entry));
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       }
@@ -40711,35 +40750,35 @@ static PyObject *__pyx_f_4lxml_5etree_15_DomainErrorLog_receive(struct __pyx_obj
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "src/lxml/xmlerror.pxi":446
+  /* "src/lxml/xmlerror.pxi":456
  * 
  *     cpdef receive(self, _LogEntry entry):
  *         if entry.domain in self._accepted_domains:             # <<<<<<<<<<<<<<
  *             _ErrorLog.receive(self, entry)
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_entry->domain); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_entry->domain); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_accepted_domains); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_accepted_domains); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_7 = (__pyx_t_6 != 0);
   if (__pyx_t_7) {
 
-    /* "src/lxml/xmlerror.pxi":447
+    /* "src/lxml/xmlerror.pxi":457
  *     cpdef receive(self, _LogEntry entry):
  *         if entry.domain in self._accepted_domains:
  *             _ErrorLog.receive(self, entry)             # <<<<<<<<<<<<<<
  * 
  * cdef class _RotatingErrorLog(_ErrorLog):
  */
-    __pyx_t_2 = __pyx_f_4lxml_5etree_9_ErrorLog_receive(((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self), __pyx_v_entry, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __pyx_f_4lxml_5etree_9_ErrorLog_receive(((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self), __pyx_v_entry, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "src/lxml/xmlerror.pxi":446
+    /* "src/lxml/xmlerror.pxi":456
  * 
  *     cpdef receive(self, _LogEntry entry):
  *         if entry.domain in self._accepted_domains:             # <<<<<<<<<<<<<<
@@ -40748,7 +40787,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_DomainErrorLog_receive(struct __pyx_obj
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":445
+  /* "src/lxml/xmlerror.pxi":455
  *         self._accepted_domains = tuple(domains)
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
@@ -40782,7 +40821,7 @@ static PyObject *__pyx_pw_4lxml_5etree_15_DomainErrorLog_3receive(PyObject *__py
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("receive (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "entry", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "entry", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_pf_4lxml_5etree_15_DomainErrorLog_2receive(((struct __pyx_obj_4lxml_5etree__DomainErrorLog *)__pyx_v_self), ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_entry));
 
   /* function exit code */
@@ -40803,7 +40842,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DomainErrorLog_2receive(struct __pyx_o
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("receive", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_5etree_15_DomainErrorLog_receive(__pyx_v_self, __pyx_v_entry, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree_15_DomainErrorLog_receive(__pyx_v_self, __pyx_v_entry, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -40820,7 +40859,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DomainErrorLog_2receive(struct __pyx_o
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":451
+/* "src/lxml/xmlerror.pxi":461
  * cdef class _RotatingErrorLog(_ErrorLog):
  *     cdef int _max_len
  *     def __init__(self, max_len):             # <<<<<<<<<<<<<<
@@ -40856,7 +40895,7 @@ static int __pyx_pw_4lxml_5etree_17_RotatingErrorLog_1__init__(PyObject *__pyx_v
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 451; __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[1]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -40867,7 +40906,7 @@ static int __pyx_pw_4lxml_5etree_17_RotatingErrorLog_1__init__(PyObject *__pyx_v
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._RotatingErrorLog.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -40893,14 +40932,14 @@ static int __pyx_pf_4lxml_5etree_17_RotatingErrorLog___init__(struct __pyx_obj_4
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "src/lxml/xmlerror.pxi":452
+  /* "src/lxml/xmlerror.pxi":462
  *     cdef int _max_len
  *     def __init__(self, max_len):
  *         _ErrorLog.__init__(self)             # <<<<<<<<<<<<<<
  *         self._max_len = max_len
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -40913,33 +40952,33 @@ static int __pyx_pf_4lxml_5etree_17_RotatingErrorLog___init__(struct __pyx_obj_4
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self));
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":453
+  /* "src/lxml/xmlerror.pxi":463
  *     def __init__(self, max_len):
  *         _ErrorLog.__init__(self)
  *         self._max_len = max_len             # <<<<<<<<<<<<<<
  * 
  *     cpdef receive(self, _LogEntry entry):
  */
-  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_max_len); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_max_len); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_self->_max_len = __pyx_t_5;
 
-  /* "src/lxml/xmlerror.pxi":451
+  /* "src/lxml/xmlerror.pxi":461
  * cdef class _RotatingErrorLog(_ErrorLog):
  *     cdef int _max_len
  *     def __init__(self, max_len):             # <<<<<<<<<<<<<<
@@ -40962,7 +41001,7 @@ static int __pyx_pf_4lxml_5etree_17_RotatingErrorLog___init__(struct __pyx_obj_4
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":455
+/* "src/lxml/xmlerror.pxi":465
  *         self._max_len = max_len
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
@@ -40994,7 +41033,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
   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 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 465; __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_17_RotatingErrorLog_3receive)) {
       __Pyx_XDECREF(__pyx_r);
@@ -41010,16 +41049,16 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
         }
       }
       if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_entry)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_entry)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
       } else {
-        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
         __Pyx_INCREF(((PyObject *)__pyx_v_entry));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
         PyTuple_SET_ITEM(__pyx_t_5, 0+1, ((PyObject *)__pyx_v_entry));
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       }
@@ -41032,7 +41071,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "src/lxml/xmlerror.pxi":456
+  /* "src/lxml/xmlerror.pxi":466
  * 
  *     cpdef receive(self, _LogEntry entry):
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:             # <<<<<<<<<<<<<<
@@ -41051,7 +41090,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_6) {
 
-    /* "src/lxml/xmlerror.pxi":457
+    /* "src/lxml/xmlerror.pxi":467
  *     cpdef receive(self, _LogEntry entry):
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  *             self._first_error = entry             # <<<<<<<<<<<<<<
@@ -41064,7 +41103,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
     __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._first_error));
     __pyx_v_self->__pyx_base.__pyx_base.__pyx_base._first_error = __pyx_v_entry;
 
-    /* "src/lxml/xmlerror.pxi":456
+    /* "src/lxml/xmlerror.pxi":466
  * 
  *     cpdef receive(self, _LogEntry entry):
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:             # <<<<<<<<<<<<<<
@@ -41073,7 +41112,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":458
+  /* "src/lxml/xmlerror.pxi":468
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  *             self._first_error = entry
  *         self._entries.append(entry)             # <<<<<<<<<<<<<<
@@ -41082,11 +41121,11 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  */
   if (unlikely(__pyx_v_self->__pyx_base.__pyx_base._entries == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
-    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_self->__pyx_base.__pyx_base._entries, ((PyObject *)__pyx_v_entry)); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_self->__pyx_base.__pyx_base._entries, ((PyObject *)__pyx_v_entry)); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/xmlerror.pxi":460
+  /* "src/lxml/xmlerror.pxi":470
  *         self._entries.append(entry)
  * 
  *         if len(self._entries) > self._max_len:             # <<<<<<<<<<<<<<
@@ -41097,14 +41136,14 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
   __Pyx_INCREF(__pyx_t_1);
   if (unlikely(__pyx_t_1 == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_10 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_6 = ((__pyx_t_10 > __pyx_v_self->_max_len) != 0);
   if (__pyx_t_6) {
 
-    /* "src/lxml/xmlerror.pxi":461
+    /* "src/lxml/xmlerror.pxi":471
  * 
  *         if len(self._entries) > self._max_len:
  *             self._offset += 1             # <<<<<<<<<<<<<<
@@ -41113,7 +41152,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  */
     __pyx_v_self->__pyx_base.__pyx_base._offset = (__pyx_v_self->__pyx_base.__pyx_base._offset + 1);
 
-    /* "src/lxml/xmlerror.pxi":462
+    /* "src/lxml/xmlerror.pxi":472
  *         if len(self._entries) > self._max_len:
  *             self._offset += 1
  *             if self._offset > self._max_len // 3:             # <<<<<<<<<<<<<<
@@ -41123,7 +41162,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
     __pyx_t_6 = ((__pyx_v_self->__pyx_base.__pyx_base._offset > __Pyx_div_long(__pyx_v_self->_max_len, 3)) != 0);
     if (__pyx_t_6) {
 
-      /* "src/lxml/xmlerror.pxi":463
+      /* "src/lxml/xmlerror.pxi":473
  *             self._offset += 1
  *             if self._offset > self._max_len // 3:
  *                 offset = self._offset             # <<<<<<<<<<<<<<
@@ -41133,7 +41172,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
       __pyx_t_11 = __pyx_v_self->__pyx_base.__pyx_base._offset;
       __pyx_v_offset = __pyx_t_11;
 
-      /* "src/lxml/xmlerror.pxi":464
+      /* "src/lxml/xmlerror.pxi":474
  *             if self._offset > self._max_len // 3:
  *                 offset = self._offset
  *                 self._offset = 0             # <<<<<<<<<<<<<<
@@ -41142,7 +41181,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  */
       __pyx_v_self->__pyx_base.__pyx_base._offset = 0;
 
-      /* "src/lxml/xmlerror.pxi":465
+      /* "src/lxml/xmlerror.pxi":475
  *                 offset = self._offset
  *                 self._offset = 0
  *                 del self._entries[:offset]             # <<<<<<<<<<<<<<
@@ -41151,11 +41190,11 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  */
       if (unlikely(__pyx_v_self->__pyx_base.__pyx_base._entries == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      if (__Pyx_PyObject_DelSlice(__pyx_v_self->__pyx_base.__pyx_base._entries, 0, __pyx_v_offset, NULL, NULL, NULL, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_PyObject_DelSlice(__pyx_v_self->__pyx_base.__pyx_base._entries, 0, __pyx_v_offset, NULL, NULL, NULL, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/xmlerror.pxi":462
+      /* "src/lxml/xmlerror.pxi":472
  *         if len(self._entries) > self._max_len:
  *             self._offset += 1
  *             if self._offset > self._max_len // 3:             # <<<<<<<<<<<<<<
@@ -41164,7 +41203,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  */
     }
 
-    /* "src/lxml/xmlerror.pxi":460
+    /* "src/lxml/xmlerror.pxi":470
  *         self._entries.append(entry)
  * 
  *         if len(self._entries) > self._max_len:             # <<<<<<<<<<<<<<
@@ -41173,7 +41212,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":455
+  /* "src/lxml/xmlerror.pxi":465
  *         self._max_len = max_len
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
@@ -41207,7 +41246,7 @@ static PyObject *__pyx_pw_4lxml_5etree_17_RotatingErrorLog_3receive(PyObject *__
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("receive (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "entry", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "entry", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_pf_4lxml_5etree_17_RotatingErrorLog_2receive(((struct __pyx_obj_4lxml_5etree__RotatingErrorLog *)__pyx_v_self), ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_entry));
 
   /* function exit code */
@@ -41228,7 +41267,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_RotatingErrorLog_2receive(struct __pyx
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("receive", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(__pyx_v_self, __pyx_v_entry, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(__pyx_v_self, __pyx_v_entry, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -41245,7 +41284,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_RotatingErrorLog_2receive(struct __pyx
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":490
+/* "src/lxml/xmlerror.pxi":500
  *     cdef object _map_level
  *     cdef object _log
  *     def __init__(self, logger_name=None, logger=None):             # <<<<<<<<<<<<<<
@@ -41292,7 +41331,7 @@ static int __pyx_pw_4lxml_5etree_10PyErrorLog_1__init__(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 490; __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[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -41307,7 +41346,7 @@ static int __pyx_pw_4lxml_5etree_10PyErrorLog_1__init__(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.PyErrorLog.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -41337,14 +41376,14 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   __Pyx_RefNannySetupContext("__init__", 0);
   __Pyx_INCREF(__pyx_v_logger);
 
-  /* "src/lxml/xmlerror.pxi":491
+  /* "src/lxml/xmlerror.pxi":501
  *     cdef object _log
  *     def __init__(self, logger_name=None, logger=None):
  *         _BaseErrorLog.__init__(self, None, None)             # <<<<<<<<<<<<<<
  *         import logging
  *         self.level_map = {
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   __pyx_t_4 = 0;
@@ -41358,7 +41397,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
       __pyx_t_4 = 1;
     }
   }
-  __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   if (__pyx_t_3) {
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
@@ -41372,81 +41411,81 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, Py_None);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":492
+  /* "src/lxml/xmlerror.pxi":502
  *     def __init__(self, logger_name=None, logger=None):
  *         _BaseErrorLog.__init__(self, None, None)
  *         import logging             # <<<<<<<<<<<<<<
  *         self.level_map = {
  *             ErrorLevels.WARNING : logging.WARNING,
  */
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_logging, 0, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_Import(__pyx_n_s_logging, 0, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_logging = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":494
+  /* "src/lxml/xmlerror.pxi":504
  *         import logging
  *         self.level_map = {
  *             ErrorLevels.WARNING : logging.WARNING,             # <<<<<<<<<<<<<<
  *             ErrorLevels.ERROR   : logging.ERROR,
  *             ErrorLevels.FATAL   : logging.CRITICAL
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_WARNING); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_WARNING); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_WARNING); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_WARNING); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/xmlerror.pxi":495
+  /* "src/lxml/xmlerror.pxi":505
  *         self.level_map = {
  *             ErrorLevels.WARNING : logging.WARNING,
  *             ErrorLevels.ERROR   : logging.ERROR,             # <<<<<<<<<<<<<<
  *             ErrorLevels.FATAL   : logging.CRITICAL
  *             }
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ERROR); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ERROR); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_ERROR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_ERROR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/xmlerror.pxi":496
+  /* "src/lxml/xmlerror.pxi":506
  *             ErrorLevels.WARNING : logging.WARNING,
  *             ErrorLevels.ERROR   : logging.ERROR,
  *             ErrorLevels.FATAL   : logging.CRITICAL             # <<<<<<<<<<<<<<
  *             }
  *         self._map_level = self.level_map.get
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FATAL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FATAL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_CRITICAL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_CRITICAL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/xmlerror.pxi":493
+  /* "src/lxml/xmlerror.pxi":503
  *         _BaseErrorLog.__init__(self, None, None)
  *         import logging
  *         self.level_map = {             # <<<<<<<<<<<<<<
@@ -41459,14 +41498,14 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   __pyx_v_self->level_map = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":498
+  /* "src/lxml/xmlerror.pxi":508
  *             ErrorLevels.FATAL   : logging.CRITICAL
  *             }
  *         self._map_level = self.level_map.get             # <<<<<<<<<<<<<<
  *         if logger is None:
  *             if logger_name:
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->level_map, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->level_map, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_map_level);
@@ -41474,7 +41513,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   __pyx_v_self->_map_level = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":499
+  /* "src/lxml/xmlerror.pxi":509
  *             }
  *         self._map_level = self.level_map.get
  *         if logger is None:             # <<<<<<<<<<<<<<
@@ -41485,24 +41524,24 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   __pyx_t_7 = (__pyx_t_6 != 0);
   if (__pyx_t_7) {
 
-    /* "src/lxml/xmlerror.pxi":500
+    /* "src/lxml/xmlerror.pxi":510
  *         self._map_level = self.level_map.get
  *         if logger is None:
  *             if logger_name:             # <<<<<<<<<<<<<<
  *                 logger = logging.getLogger(logger_name)
  *             else:
  */
-    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_logger_name); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_logger_name); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_7) {
 
-      /* "src/lxml/xmlerror.pxi":501
+      /* "src/lxml/xmlerror.pxi":511
  *         if logger is None:
  *             if logger_name:
  *                 logger = logging.getLogger(logger_name)             # <<<<<<<<<<<<<<
  *             else:
  *                 logger = logging.getLogger()
  */
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_5 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -41515,16 +41554,16 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
         }
       }
       if (!__pyx_t_5) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_logger_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_logger_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
       } else {
-        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
         __Pyx_INCREF(__pyx_v_logger_name);
         __Pyx_GIVEREF(__pyx_v_logger_name);
         PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_logger_name);
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       }
@@ -41532,7 +41571,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
       __Pyx_DECREF_SET(__pyx_v_logger, __pyx_t_1);
       __pyx_t_1 = 0;
 
-      /* "src/lxml/xmlerror.pxi":500
+      /* "src/lxml/xmlerror.pxi":510
  *         self._map_level = self.level_map.get
  *         if logger is None:
  *             if logger_name:             # <<<<<<<<<<<<<<
@@ -41542,7 +41581,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
       goto __pyx_L4;
     }
 
-    /* "src/lxml/xmlerror.pxi":503
+    /* "src/lxml/xmlerror.pxi":513
  *                 logger = logging.getLogger(logger_name)
  *             else:
  *                 logger = logging.getLogger()             # <<<<<<<<<<<<<<
@@ -41550,7 +41589,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  * 
  */
     /*else*/ {
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_3 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -41563,10 +41602,10 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
         }
       }
       if (__pyx_t_3) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -41575,7 +41614,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
     }
     __pyx_L4:;
 
-    /* "src/lxml/xmlerror.pxi":499
+    /* "src/lxml/xmlerror.pxi":509
  *             }
  *         self._map_level = self.level_map.get
  *         if logger is None:             # <<<<<<<<<<<<<<
@@ -41584,14 +41623,14 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":504
+  /* "src/lxml/xmlerror.pxi":514
  *             else:
  *                 logger = logging.getLogger()
  *         self._log = logger.log             # <<<<<<<<<<<<<<
  * 
  *     cpdef copy(self):
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_logger, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_logger, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_log);
@@ -41599,7 +41638,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   __pyx_v_self->_log = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":490
+  /* "src/lxml/xmlerror.pxi":500
  *     cdef object _map_level
  *     cdef object _log
  *     def __init__(self, logger_name=None, logger=None):             # <<<<<<<<<<<<<<
@@ -41624,7 +41663,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":506
+/* "src/lxml/xmlerror.pxi":516
  *         self._log = logger.log
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
@@ -41648,7 +41687,7 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_copy(CYTHON_UNUSED struct __p
   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 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 516; __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_10PyErrorLog_3copy)) {
       __Pyx_XDECREF(__pyx_r);
@@ -41664,10 +41703,10 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_copy(CYTHON_UNUSED struct __p
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -41679,7 +41718,7 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_copy(CYTHON_UNUSED struct __p
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "src/lxml/xmlerror.pxi":509
+  /* "src/lxml/xmlerror.pxi":519
  *         u"""Dummy method that returns an empty error log.
  *         """
  *         return _ListErrorLog([], None, None)             # <<<<<<<<<<<<<<
@@ -41687,9 +41726,9 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_copy(CYTHON_UNUSED struct __p
  *     def log(self, log_entry, message, *args):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
@@ -41700,14 +41739,14 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_copy(CYTHON_UNUSED struct __p
   __Pyx_GIVEREF(Py_None);
   PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":506
+  /* "src/lxml/xmlerror.pxi":516
  *         self._log = logger.log
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
@@ -41752,7 +41791,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_2copy(struct __pyx_obj_4lxml
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("copy", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_5etree_10PyErrorLog_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree_10PyErrorLog_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -41769,7 +41808,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_2copy(struct __pyx_obj_4lxml
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":511
+/* "src/lxml/xmlerror.pxi":521
  *         return _ListErrorLog([], None, None)
  * 
  *     def log(self, log_entry, message, *args):             # <<<<<<<<<<<<<<
@@ -41820,12 +41859,12 @@ static PyObject *__pyx_pw_4lxml_5etree_10PyErrorLog_5log(PyObject *__pyx_v_self,
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_message)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("log", 0, 2, 2, 1); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("log", 0, 2, 2, 1); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
         const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2;
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "log") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "log") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) < 2) {
       goto __pyx_L5_argtuple_error;
@@ -41838,7 +41877,7 @@ static PyObject *__pyx_pw_4lxml_5etree_10PyErrorLog_5log(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("log", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("log", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
   __Pyx_AddTraceback("lxml.etree.PyErrorLog.log", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -41867,14 +41906,14 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("log", 0);
 
-  /* "src/lxml/xmlerror.pxi":524
+  /* "src/lxml/xmlerror.pxi":534
  *         """
  *         self._log(
  *             self._map_level(log_entry.level, 0),             # <<<<<<<<<<<<<<
  *             message, *args
  *             )
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_log_entry, __pyx_n_s_level); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_log_entry, __pyx_n_s_level); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_self->_map_level);
   __pyx_t_3 = __pyx_v_self->_map_level; __pyx_t_4 = NULL;
@@ -41889,7 +41928,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
       __pyx_t_5 = 1;
     }
   }
-  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   if (__pyx_t_4) {
     __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -41900,19 +41939,19 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
   __Pyx_GIVEREF(__pyx_int_0);
   PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_int_0);
   __pyx_t_2 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/xmlerror.pxi":523
+  /* "src/lxml/xmlerror.pxi":533
  *         override the .receive() method instead of this one.
  *         """
  *         self._log(             # <<<<<<<<<<<<<<
  *             self._map_level(log_entry.level, 0),
  *             message, *args
  */
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
@@ -41921,30 +41960,30 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_message);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":526
+  /* "src/lxml/xmlerror.pxi":536
  *             self._map_level(log_entry.level, 0),
  *             message, *args
  *             )             # <<<<<<<<<<<<<<
  * 
  *     cpdef receive(self, _LogEntry log_entry):
  */
-  __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/xmlerror.pxi":523
+  /* "src/lxml/xmlerror.pxi":533
  *         override the .receive() method instead of this one.
  *         """
  *         self._log(             # <<<<<<<<<<<<<<
  *             self._map_level(log_entry.level, 0),
  *             message, *args
  */
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_self->_log, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_self->_log, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/xmlerror.pxi":511
+  /* "src/lxml/xmlerror.pxi":521
  *         return _ListErrorLog([], None, None)
  * 
  *     def log(self, log_entry, message, *args):             # <<<<<<<<<<<<<<
@@ -41969,7 +42008,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":528
+/* "src/lxml/xmlerror.pxi":538
  *             )
  * 
  *     cpdef receive(self, _LogEntry log_entry):             # <<<<<<<<<<<<<<
@@ -41995,7 +42034,7 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxm
   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 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 538; __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_10PyErrorLog_7receive)) {
       __Pyx_XDECREF(__pyx_r);
@@ -42011,16 +42050,16 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxm
         }
       }
       if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_log_entry)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_log_entry)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
       } else {
-        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
         __Pyx_INCREF(((PyObject *)__pyx_v_log_entry));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_log_entry));
         PyTuple_SET_ITEM(__pyx_t_5, 0+1, ((PyObject *)__pyx_v_log_entry));
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       }
@@ -42033,16 +42072,16 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxm
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "src/lxml/xmlerror.pxi":539
+  /* "src/lxml/xmlerror.pxi":549
  *         format.
  *         """
  *         self.log(log_entry, repr(log_entry))             # <<<<<<<<<<<<<<
  * 
  * # thread-local, global list log to collect error output messages from
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_log); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_log); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyObject_Repr(((PyObject *)__pyx_v_log_entry)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_Repr(((PyObject *)__pyx_v_log_entry)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_5 = NULL;
   __pyx_t_6 = 0;
@@ -42056,7 +42095,7 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxm
       __pyx_t_6 = 1;
     }
   }
-  __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   if (__pyx_t_5) {
     __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -42067,13 +42106,13 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxm
   __Pyx_GIVEREF(__pyx_t_3);
   PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_t_3);
   __pyx_t_3 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":528
+  /* "src/lxml/xmlerror.pxi":538
  *             )
  * 
  *     cpdef receive(self, _LogEntry log_entry):             # <<<<<<<<<<<<<<
@@ -42108,7 +42147,7 @@ static PyObject *__pyx_pw_4lxml_5etree_10PyErrorLog_7receive(PyObject *__pyx_v_s
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("receive (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_log_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "log_entry", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_log_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "log_entry", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_pf_4lxml_5etree_10PyErrorLog_6receive(((struct __pyx_obj_4lxml_5etree_PyErrorLog *)__pyx_v_self), ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_log_entry));
 
   /* function exit code */
@@ -42129,7 +42168,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_6receive(struct __pyx_obj_4l
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("receive", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_5etree_10PyErrorLog_receive(__pyx_v_self, __pyx_v_log_entry, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree_10PyErrorLog_receive(__pyx_v_self, __pyx_v_log_entry, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -42146,7 +42185,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_6receive(struct __pyx_obj_4l
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":487
+/* "src/lxml/xmlerror.pxi":497
  *     with appropriate data.
  *     """
  *     cdef readonly dict level_map             # <<<<<<<<<<<<<<
@@ -42183,7 +42222,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_9level_map___get__(struct __
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":547
+/* "src/lxml/xmlerror.pxi":557
  * __GLOBAL_ERROR_LOG = _RotatingErrorLog(__MAX_LOG_SIZE)
  * 
  * cdef _BaseErrorLog _getGlobalErrorLog():             # <<<<<<<<<<<<<<
@@ -42210,7 +42249,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getGlo
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_getGlobalErrorLog", 0);
 
-  /* "src/lxml/xmlerror.pxi":550
+  /* "src/lxml/xmlerror.pxi":560
  *     u"""Retrieve the global error log of this thread."""
  *     cdef python.PyObject* thread_dict
  *     thread_dict = python.PyThreadState_GetDict()             # <<<<<<<<<<<<<<
@@ -42219,7 +42258,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getGlo
  */
   __pyx_v_thread_dict = PyThreadState_GetDict();
 
-  /* "src/lxml/xmlerror.pxi":551
+  /* "src/lxml/xmlerror.pxi":561
  *     cdef python.PyObject* thread_dict
  *     thread_dict = python.PyThreadState_GetDict()
  *     if thread_dict is NULL:             # <<<<<<<<<<<<<<
@@ -42229,7 +42268,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getGlo
   __pyx_t_1 = ((__pyx_v_thread_dict == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":552
+    /* "src/lxml/xmlerror.pxi":562
  *     thread_dict = python.PyThreadState_GetDict()
  *     if thread_dict is NULL:
  *         return __GLOBAL_ERROR_LOG             # <<<<<<<<<<<<<<
@@ -42241,7 +42280,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getGlo
     __pyx_r = __pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG;
     goto __pyx_L0;
 
-    /* "src/lxml/xmlerror.pxi":551
+    /* "src/lxml/xmlerror.pxi":561
  *     cdef python.PyObject* thread_dict
  *     thread_dict = python.PyThreadState_GetDict()
  *     if thread_dict is NULL:             # <<<<<<<<<<<<<<
@@ -42250,7 +42289,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getGlo
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":553
+  /* "src/lxml/xmlerror.pxi":563
  *     if thread_dict is NULL:
  *         return __GLOBAL_ERROR_LOG
  *     try:             # <<<<<<<<<<<<<<
@@ -42264,7 +42303,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getGlo
     __Pyx_XGOTREF(__pyx_t_4);
     /*try:*/ {
 
-      /* "src/lxml/xmlerror.pxi":554
+      /* "src/lxml/xmlerror.pxi":564
  *         return __GLOBAL_ERROR_LOG
  *     try:
  *         return (<object>thread_dict)[u"_GlobalErrorLog"]             # <<<<<<<<<<<<<<
@@ -42272,14 +42311,14 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getGlo
  *         log = (<object>thread_dict)[u"_GlobalErrorLog"] = \
  */
       __Pyx_XDECREF(((PyObject *)__pyx_r));
-      __pyx_t_5 = PyObject_GetItem(((PyObject *)__pyx_v_thread_dict), __pyx_n_u_GlobalErrorLog); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
+      __pyx_t_5 = PyObject_GetItem(((PyObject *)__pyx_v_thread_dict), __pyx_n_u_GlobalErrorLog); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
       __Pyx_GOTREF(__pyx_t_5);
-      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_5etree__BaseErrorLog))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_5etree__BaseErrorLog))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __pyx_r = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_5);
       __pyx_t_5 = 0;
       goto __pyx_L8_try_return;
 
-      /* "src/lxml/xmlerror.pxi":553
+      /* "src/lxml/xmlerror.pxi":563
  *     if thread_dict is NULL:
  *         return __GLOBAL_ERROR_LOG
  *     try:             # <<<<<<<<<<<<<<
@@ -42290,7 +42329,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getGlo
     __pyx_L4_error:;
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "src/lxml/xmlerror.pxi":555
+    /* "src/lxml/xmlerror.pxi":565
  *     try:
  *         return (<object>thread_dict)[u"_GlobalErrorLog"]
  *     except KeyError:             # <<<<<<<<<<<<<<
@@ -42300,34 +42339,34 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getGlo
     __pyx_t_6 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.etree._getGlobalErrorLog", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GOTREF(__pyx_t_8);
 
-      /* "src/lxml/xmlerror.pxi":557
+      /* "src/lxml/xmlerror.pxi":567
  *     except KeyError:
  *         log = (<object>thread_dict)[u"_GlobalErrorLog"] = \
  *               _RotatingErrorLog(__MAX_LOG_SIZE)             # <<<<<<<<<<<<<<
  *         return log
  * 
  */
-      __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__RotatingErrorLog), __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__RotatingErrorLog), __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_INCREF(__pyx_t_9);
       __pyx_v_log = ((struct __pyx_obj_4lxml_5etree__RotatingErrorLog *)__pyx_t_9);
 
-      /* "src/lxml/xmlerror.pxi":556
+      /* "src/lxml/xmlerror.pxi":566
  *         return (<object>thread_dict)[u"_GlobalErrorLog"]
  *     except KeyError:
  *         log = (<object>thread_dict)[u"_GlobalErrorLog"] = \             # <<<<<<<<<<<<<<
  *               _RotatingErrorLog(__MAX_LOG_SIZE)
  *         return log
  */
-      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_thread_dict), __pyx_n_u_GlobalErrorLog, __pyx_t_9) < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_thread_dict), __pyx_n_u_GlobalErrorLog, __pyx_t_9) < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
-      /* "src/lxml/xmlerror.pxi":558
+      /* "src/lxml/xmlerror.pxi":568
  *         log = (<object>thread_dict)[u"_GlobalErrorLog"] = \
  *               _RotatingErrorLog(__MAX_LOG_SIZE)
  *         return log             # <<<<<<<<<<<<<<
@@ -42345,7 +42384,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getGlo
     goto __pyx_L6_except_error;
     __pyx_L6_except_error:;
 
-    /* "src/lxml/xmlerror.pxi":553
+    /* "src/lxml/xmlerror.pxi":563
  *     if thread_dict is NULL:
  *         return __GLOBAL_ERROR_LOG
  *     try:             # <<<<<<<<<<<<<<
@@ -42371,7 +42410,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getGlo
     goto __pyx_L0;
   }
 
-  /* "src/lxml/xmlerror.pxi":547
+  /* "src/lxml/xmlerror.pxi":557
  * __GLOBAL_ERROR_LOG = _RotatingErrorLog(__MAX_LOG_SIZE)
  * 
  * cdef _BaseErrorLog _getGlobalErrorLog():             # <<<<<<<<<<<<<<
@@ -42394,7 +42433,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getGlo
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":560
+/* "src/lxml/xmlerror.pxi":570
  *         return log
  * 
  * cdef _setGlobalErrorLog(_BaseErrorLog log):             # <<<<<<<<<<<<<<
@@ -42412,7 +42451,7 @@ static PyObject *__pyx_f_4lxml_5etree__setGlobalErrorLog(struct __pyx_obj_4lxml_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_setGlobalErrorLog", 0);
 
-  /* "src/lxml/xmlerror.pxi":563
+  /* "src/lxml/xmlerror.pxi":573
  *     u"""Set the global error log of this thread."""
  *     cdef python.PyObject* thread_dict
  *     thread_dict = python.PyThreadState_GetDict()             # <<<<<<<<<<<<<<
@@ -42421,7 +42460,7 @@ static PyObject *__pyx_f_4lxml_5etree__setGlobalErrorLog(struct __pyx_obj_4lxml_
  */
   __pyx_v_thread_dict = PyThreadState_GetDict();
 
-  /* "src/lxml/xmlerror.pxi":564
+  /* "src/lxml/xmlerror.pxi":574
  *     cdef python.PyObject* thread_dict
  *     thread_dict = python.PyThreadState_GetDict()
  *     if thread_dict is NULL:             # <<<<<<<<<<<<<<
@@ -42431,7 +42470,7 @@ static PyObject *__pyx_f_4lxml_5etree__setGlobalErrorLog(struct __pyx_obj_4lxml_
   __pyx_t_1 = ((__pyx_v_thread_dict == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":566
+    /* "src/lxml/xmlerror.pxi":576
  *     if thread_dict is NULL:
  *         global __GLOBAL_ERROR_LOG
  *         __GLOBAL_ERROR_LOG = log             # <<<<<<<<<<<<<<
@@ -42443,7 +42482,7 @@ static PyObject *__pyx_f_4lxml_5etree__setGlobalErrorLog(struct __pyx_obj_4lxml_
     __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG, __pyx_v_log);
     __Pyx_GIVEREF(((PyObject *)__pyx_v_log));
 
-    /* "src/lxml/xmlerror.pxi":564
+    /* "src/lxml/xmlerror.pxi":574
  *     cdef python.PyObject* thread_dict
  *     thread_dict = python.PyThreadState_GetDict()
  *     if thread_dict is NULL:             # <<<<<<<<<<<<<<
@@ -42453,7 +42492,7 @@ static PyObject *__pyx_f_4lxml_5etree__setGlobalErrorLog(struct __pyx_obj_4lxml_
     goto __pyx_L3;
   }
 
-  /* "src/lxml/xmlerror.pxi":568
+  /* "src/lxml/xmlerror.pxi":578
  *         __GLOBAL_ERROR_LOG = log
  *     else:
  *         (<object>thread_dict)[u"_GlobalErrorLog"] = log             # <<<<<<<<<<<<<<
@@ -42461,11 +42500,11 @@ static PyObject *__pyx_f_4lxml_5etree__setGlobalErrorLog(struct __pyx_obj_4lxml_
  * cdef __copyGlobalErrorLog():
  */
   /*else*/ {
-    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_thread_dict), __pyx_n_u_GlobalErrorLog, ((PyObject *)__pyx_v_log)) < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_thread_dict), __pyx_n_u_GlobalErrorLog, ((PyObject *)__pyx_v_log)) < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_L3:;
 
-  /* "src/lxml/xmlerror.pxi":560
+  /* "src/lxml/xmlerror.pxi":570
  *         return log
  * 
  * cdef _setGlobalErrorLog(_BaseErrorLog log):             # <<<<<<<<<<<<<<
@@ -42485,7 +42524,7 @@ static PyObject *__pyx_f_4lxml_5etree__setGlobalErrorLog(struct __pyx_obj_4lxml_
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":570
+/* "src/lxml/xmlerror.pxi":580
  *         (<object>thread_dict)[u"_GlobalErrorLog"] = log
  * 
  * cdef __copyGlobalErrorLog():             # <<<<<<<<<<<<<<
@@ -42503,7 +42542,7 @@ static PyObject *__pyx_f_4lxml_5etree___copyGlobalErrorLog(void) {
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__copyGlobalErrorLog", 0);
 
-  /* "src/lxml/xmlerror.pxi":572
+  /* "src/lxml/xmlerror.pxi":582
  * cdef __copyGlobalErrorLog():
  *     u"Helper function for properties in exceptions."
  *     return _getGlobalErrorLog().copy()             # <<<<<<<<<<<<<<
@@ -42511,16 +42550,16 @@ static PyObject *__pyx_f_4lxml_5etree___copyGlobalErrorLog(void) {
  * def use_global_python_log(PyErrorLog log not None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getGlobalErrorLog()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getGlobalErrorLog()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1)->__pyx_vtab)->copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1), 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1)->__pyx_vtab)->copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1), 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":570
+  /* "src/lxml/xmlerror.pxi":580
  *         (<object>thread_dict)[u"_GlobalErrorLog"] = log
  * 
  * cdef __copyGlobalErrorLog():             # <<<<<<<<<<<<<<
@@ -42540,7 +42579,7 @@ static PyObject *__pyx_f_4lxml_5etree___copyGlobalErrorLog(void) {
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":574
+/* "src/lxml/xmlerror.pxi":584
  *     return _getGlobalErrorLog().copy()
  * 
  * def use_global_python_log(PyErrorLog log not None):             # <<<<<<<<<<<<<<
@@ -42559,7 +42598,7 @@ static PyObject *__pyx_pw_4lxml_5etree_5use_global_python_log(PyObject *__pyx_se
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("use_global_python_log (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_log), __pyx_ptype_4lxml_5etree_PyErrorLog, 0, "log", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_log), __pyx_ptype_4lxml_5etree_PyErrorLog, 0, "log", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_pf_4lxml_5etree_4use_global_python_log(__pyx_self, ((struct __pyx_obj_4lxml_5etree_PyErrorLog *)__pyx_v_log));
 
   /* function exit code */
@@ -42580,18 +42619,18 @@ static PyObject *__pyx_pf_4lxml_5etree_4use_global_python_log(CYTHON_UNUSED PyOb
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("use_global_python_log", 0);
 
-  /* "src/lxml/xmlerror.pxi":587
+  /* "src/lxml/xmlerror.pxi":597
  *     function will only set the global error log of the current thread.
  *     """
  *     _setGlobalErrorLog(log)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__setGlobalErrorLog(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_log)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree__setGlobalErrorLog(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_log)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":574
+  /* "src/lxml/xmlerror.pxi":584
  *     return _getGlobalErrorLog().copy()
  * 
  * def use_global_python_log(PyErrorLog log not None):             # <<<<<<<<<<<<<<
@@ -42612,7 +42651,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4use_global_python_log(CYTHON_UNUSED PyOb
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":591
+/* "src/lxml/xmlerror.pxi":601
  * 
  * # local log functions: forward error to logger object
  * cdef void _forwardError(void* c_log_handler, xmlerror.xmlError* error) with gil:             # <<<<<<<<<<<<<<
@@ -42633,7 +42672,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
   #endif
   __Pyx_RefNannySetupContext("_forwardError", 0);
 
-  /* "src/lxml/xmlerror.pxi":593
+  /* "src/lxml/xmlerror.pxi":603
  * cdef void _forwardError(void* c_log_handler, xmlerror.xmlError* error) with gil:
  *     cdef _BaseErrorLog log_handler
  *     if c_log_handler is not NULL:             # <<<<<<<<<<<<<<
@@ -42643,7 +42682,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
   __pyx_t_1 = ((__pyx_v_c_log_handler != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":594
+    /* "src/lxml/xmlerror.pxi":604
  *     cdef _BaseErrorLog log_handler
  *     if c_log_handler is not NULL:
  *         log_handler = <_BaseErrorLog>c_log_handler             # <<<<<<<<<<<<<<
@@ -42655,7 +42694,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
     __pyx_v_log_handler = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "src/lxml/xmlerror.pxi":593
+    /* "src/lxml/xmlerror.pxi":603
  * cdef void _forwardError(void* c_log_handler, xmlerror.xmlError* error) with gil:
  *     cdef _BaseErrorLog log_handler
  *     if c_log_handler is not NULL:             # <<<<<<<<<<<<<<
@@ -42665,7 +42704,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
     goto __pyx_L3;
   }
 
-  /* "src/lxml/xmlerror.pxi":596
+  /* "src/lxml/xmlerror.pxi":606
  *         log_handler = <_BaseErrorLog>c_log_handler
  *     else:
  *         log_handler = _getGlobalErrorLog()             # <<<<<<<<<<<<<<
@@ -42673,14 +42712,14 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
  * 
  */
   /*else*/ {
-    __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__getGlobalErrorLog()); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__getGlobalErrorLog()); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_log_handler = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_2);
     __pyx_t_2 = 0;
   }
   __pyx_L3:;
 
-  /* "src/lxml/xmlerror.pxi":597
+  /* "src/lxml/xmlerror.pxi":607
  *     else:
  *         log_handler = _getGlobalErrorLog()
  *     log_handler._receive(error)             # <<<<<<<<<<<<<<
@@ -42689,7 +42728,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
  */
   __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(__pyx_v_log_handler, __pyx_v_error);
 
-  /* "src/lxml/xmlerror.pxi":591
+  /* "src/lxml/xmlerror.pxi":601
  * 
  * # local log functions: forward error to logger object
  * cdef void _forwardError(void* c_log_handler, xmlerror.xmlError* error) with gil:             # <<<<<<<<<<<<<<
@@ -42710,7 +42749,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
   #endif
 }
 
-/* "src/lxml/xmlerror.pxi":599
+/* "src/lxml/xmlerror.pxi":609
  *     log_handler._receive(error)
  * 
  * cdef void _receiveError(void* c_log_handler, xmlerror.xmlError* error) nogil:             # <<<<<<<<<<<<<<
@@ -42720,7 +42759,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
 
 static void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlError *__pyx_v_error) {
 
-  /* "src/lxml/xmlerror.pxi":602
+  /* "src/lxml/xmlerror.pxi":612
  *     # no Python objects here, may be called without thread context !
  *     if __DEBUG:
  *         _forwardError(c_log_handler, error)             # <<<<<<<<<<<<<<
@@ -42729,7 +42768,7 @@ static void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlE
  */
   __pyx_f_4lxml_5etree__forwardError(__pyx_v_c_log_handler, __pyx_v_error);
 
-  /* "src/lxml/xmlerror.pxi":599
+  /* "src/lxml/xmlerror.pxi":609
  *     log_handler._receive(error)
  * 
  * cdef void _receiveError(void* c_log_handler, xmlerror.xmlError* error) nogil:             # <<<<<<<<<<<<<<
@@ -42740,7 +42779,7 @@ static void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlE
   /* function exit code */
 }
 
-/* "src/lxml/xmlerror.pxi":604
+/* "src/lxml/xmlerror.pxi":614
  *         _forwardError(c_log_handler, error)
  * 
  * cdef void _receiveXSLTError(void* c_log_handler, char* msg, ...) nogil:             # <<<<<<<<<<<<<<
@@ -42764,7 +42803,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
   int __pyx_t_1;
   int __pyx_t_2;
 
-  /* "src/lxml/xmlerror.pxi":615
+  /* "src/lxml/xmlerror.pxi":625
  *     cdef char* c_str
  *     cdef int text_size, element_size, format_count, c_int
  *     if not __DEBUG or msg is NULL:             # <<<<<<<<<<<<<<
@@ -42774,7 +42813,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
   __pyx_t_1 = ((__pyx_v_msg == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":616
+    /* "src/lxml/xmlerror.pxi":626
  *     cdef int text_size, element_size, format_count, c_int
  *     if not __DEBUG or msg is NULL:
  *         return             # <<<<<<<<<<<<<<
@@ -42783,7 +42822,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
     goto __pyx_L0;
 
-    /* "src/lxml/xmlerror.pxi":615
+    /* "src/lxml/xmlerror.pxi":625
  *     cdef char* c_str
  *     cdef int text_size, element_size, format_count, c_int
  *     if not __DEBUG or msg is NULL:             # <<<<<<<<<<<<<<
@@ -42792,7 +42831,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":617
+  /* "src/lxml/xmlerror.pxi":627
  *     if not __DEBUG or msg is NULL:
  *         return
  *     if msg[0] in b'\n\0':             # <<<<<<<<<<<<<<
@@ -42803,7 +42842,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
     case '\x00':
     case '\n':
 
-    /* "src/lxml/xmlerror.pxi":618
+    /* "src/lxml/xmlerror.pxi":628
  *         return
  *     if msg[0] in b'\n\0':
  *         return             # <<<<<<<<<<<<<<
@@ -42812,7 +42851,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
     goto __pyx_L0;
 
-    /* "src/lxml/xmlerror.pxi":617
+    /* "src/lxml/xmlerror.pxi":627
  *     if not __DEBUG or msg is NULL:
  *         return
  *     if msg[0] in b'\n\0':             # <<<<<<<<<<<<<<
@@ -42823,7 +42862,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
     default: break;
   }
 
-  /* "src/lxml/xmlerror.pxi":620
+  /* "src/lxml/xmlerror.pxi":630
  *         return
  * 
  *     c_text = c_element = c_error.file = NULL             # <<<<<<<<<<<<<<
@@ -42834,7 +42873,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
   __pyx_v_c_element = NULL;
   __pyx_v_c_error.file = NULL;
 
-  /* "src/lxml/xmlerror.pxi":621
+  /* "src/lxml/xmlerror.pxi":631
  * 
  *     c_text = c_element = c_error.file = NULL
  *     c_error.line = 0             # <<<<<<<<<<<<<<
@@ -42843,7 +42882,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
   __pyx_v_c_error.line = 0;
 
-  /* "src/lxml/xmlerror.pxi":624
+  /* "src/lxml/xmlerror.pxi":634
  * 
  *     # parse "NAME %s" chunks from the format string
  *     cvarargs.va_start(args, msg)             # <<<<<<<<<<<<<<
@@ -42852,7 +42891,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
   va_start(__pyx_v_args, __pyx_v_msg);
 
-  /* "src/lxml/xmlerror.pxi":625
+  /* "src/lxml/xmlerror.pxi":635
  *     # parse "NAME %s" chunks from the format string
  *     cvarargs.va_start(args, msg)
  *     c_name_pos = c_pos = msg             # <<<<<<<<<<<<<<
@@ -42862,7 +42901,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
   __pyx_v_c_name_pos = __pyx_v_msg;
   __pyx_v_c_pos = __pyx_v_msg;
 
-  /* "src/lxml/xmlerror.pxi":626
+  /* "src/lxml/xmlerror.pxi":636
  *     cvarargs.va_start(args, msg)
  *     c_name_pos = c_pos = msg
  *     format_count = 0             # <<<<<<<<<<<<<<
@@ -42871,7 +42910,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
   __pyx_v_format_count = 0;
 
-  /* "src/lxml/xmlerror.pxi":627
+  /* "src/lxml/xmlerror.pxi":637
  *     c_name_pos = c_pos = msg
  *     format_count = 0
  *     while c_pos[0]:             # <<<<<<<<<<<<<<
@@ -42882,7 +42921,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
     __pyx_t_1 = ((__pyx_v_c_pos[0]) != 0);
     if (!__pyx_t_1) break;
 
-    /* "src/lxml/xmlerror.pxi":628
+    /* "src/lxml/xmlerror.pxi":638
  *     format_count = 0
  *     while c_pos[0]:
  *         if c_pos[0] == b'%':             # <<<<<<<<<<<<<<
@@ -42892,7 +42931,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
     __pyx_t_1 = (((__pyx_v_c_pos[0]) == '%') != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/xmlerror.pxi":629
+      /* "src/lxml/xmlerror.pxi":639
  *     while c_pos[0]:
  *         if c_pos[0] == b'%':
  *             c_pos += 1             # <<<<<<<<<<<<<<
@@ -42901,7 +42940,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
       __pyx_v_c_pos = (__pyx_v_c_pos + 1);
 
-      /* "src/lxml/xmlerror.pxi":630
+      /* "src/lxml/xmlerror.pxi":640
  *         if c_pos[0] == b'%':
  *             c_pos += 1
  *             if c_pos[0] == b's':  # "%s"             # <<<<<<<<<<<<<<
@@ -42911,7 +42950,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
       __pyx_t_1 = (((__pyx_v_c_pos[0]) == 's') != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/xmlerror.pxi":631
+        /* "src/lxml/xmlerror.pxi":641
  *             c_pos += 1
  *             if c_pos[0] == b's':  # "%s"
  *                 format_count += 1             # <<<<<<<<<<<<<<
@@ -42920,7 +42959,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
         __pyx_v_format_count = (__pyx_v_format_count + 1);
 
-        /* "src/lxml/xmlerror.pxi":632
+        /* "src/lxml/xmlerror.pxi":642
  *             if c_pos[0] == b's':  # "%s"
  *                 format_count += 1
  *                 c_str = cvarargs.va_charptr(args)             # <<<<<<<<<<<<<<
@@ -42929,7 +42968,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
         __pyx_v_c_str = va_charptr(__pyx_v_args);
 
-        /* "src/lxml/xmlerror.pxi":633
+        /* "src/lxml/xmlerror.pxi":643
  *                 format_count += 1
  *                 c_str = cvarargs.va_charptr(args)
  *                 if c_pos == msg + 1:             # <<<<<<<<<<<<<<
@@ -42939,7 +42978,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
         __pyx_t_1 = ((__pyx_v_c_pos == (__pyx_v_msg + 1)) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/xmlerror.pxi":634
+          /* "src/lxml/xmlerror.pxi":644
  *                 c_str = cvarargs.va_charptr(args)
  *                 if c_pos == msg + 1:
  *                     c_text = c_str  # msg == "%s..."             # <<<<<<<<<<<<<<
@@ -42948,7 +42987,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
           __pyx_v_c_text = __pyx_v_c_str;
 
-          /* "src/lxml/xmlerror.pxi":633
+          /* "src/lxml/xmlerror.pxi":643
  *                 format_count += 1
  *                 c_str = cvarargs.va_charptr(args)
  *                 if c_pos == msg + 1:             # <<<<<<<<<<<<<<
@@ -42958,7 +42997,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
           goto __pyx_L8;
         }
 
-        /* "src/lxml/xmlerror.pxi":635
+        /* "src/lxml/xmlerror.pxi":645
  *                 if c_pos == msg + 1:
  *                     c_text = c_str  # msg == "%s..."
  *                 elif c_name_pos[0] == b'e':             # <<<<<<<<<<<<<<
@@ -42968,7 +43007,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
         __pyx_t_1 = (((__pyx_v_c_name_pos[0]) == 'e') != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/xmlerror.pxi":636
+          /* "src/lxml/xmlerror.pxi":646
  *                     c_text = c_str  # msg == "%s..."
  *                 elif c_name_pos[0] == b'e':
  *                     if cstring_h.strncmp(c_name_pos, 'element %s', 10):             # <<<<<<<<<<<<<<
@@ -42978,7 +43017,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
           __pyx_t_1 = (strncmp(__pyx_v_c_name_pos, __pyx_k_element_s, 10) != 0);
           if (__pyx_t_1) {
 
-            /* "src/lxml/xmlerror.pxi":637
+            /* "src/lxml/xmlerror.pxi":647
  *                 elif c_name_pos[0] == b'e':
  *                     if cstring_h.strncmp(c_name_pos, 'element %s', 10):
  *                         c_element = c_str             # <<<<<<<<<<<<<<
@@ -42987,7 +43026,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
             __pyx_v_c_element = __pyx_v_c_str;
 
-            /* "src/lxml/xmlerror.pxi":636
+            /* "src/lxml/xmlerror.pxi":646
  *                     c_text = c_str  # msg == "%s..."
  *                 elif c_name_pos[0] == b'e':
  *                     if cstring_h.strncmp(c_name_pos, 'element %s', 10):             # <<<<<<<<<<<<<<
@@ -42996,7 +43035,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
           }
 
-          /* "src/lxml/xmlerror.pxi":635
+          /* "src/lxml/xmlerror.pxi":645
  *                 if c_pos == msg + 1:
  *                     c_text = c_str  # msg == "%s..."
  *                 elif c_name_pos[0] == b'e':             # <<<<<<<<<<<<<<
@@ -43006,7 +43045,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
           goto __pyx_L8;
         }
 
-        /* "src/lxml/xmlerror.pxi":638
+        /* "src/lxml/xmlerror.pxi":648
  *                     if cstring_h.strncmp(c_name_pos, 'element %s', 10):
  *                         c_element = c_str
  *                 elif c_name_pos[0] == b'f':             # <<<<<<<<<<<<<<
@@ -43016,7 +43055,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
         __pyx_t_1 = (((__pyx_v_c_name_pos[0]) == 'f') != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/xmlerror.pxi":639
+          /* "src/lxml/xmlerror.pxi":649
  *                         c_element = c_str
  *                 elif c_name_pos[0] == b'f':
  *                     if cstring_h.strncmp(c_name_pos, 'file %s', 7):             # <<<<<<<<<<<<<<
@@ -43026,7 +43065,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
           __pyx_t_1 = (strncmp(__pyx_v_c_name_pos, __pyx_k_file_s, 7) != 0);
           if (__pyx_t_1) {
 
-            /* "src/lxml/xmlerror.pxi":641
+            /* "src/lxml/xmlerror.pxi":651
  *                     if cstring_h.strncmp(c_name_pos, 'file %s', 7):
  *                         if cstring_h.strncmp('string://__STRING__XSLT',
  *                                              c_str, 23) == 0:             # <<<<<<<<<<<<<<
@@ -43035,7 +43074,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
             __pyx_t_1 = ((strncmp(__pyx_k_string___STRING__XSLT, __pyx_v_c_str, 23) == 0) != 0);
 
-            /* "src/lxml/xmlerror.pxi":640
+            /* "src/lxml/xmlerror.pxi":650
  *                 elif c_name_pos[0] == b'f':
  *                     if cstring_h.strncmp(c_name_pos, 'file %s', 7):
  *                         if cstring_h.strncmp('string://__STRING__XSLT',             # <<<<<<<<<<<<<<
@@ -43044,7 +43083,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
             if (__pyx_t_1) {
 
-              /* "src/lxml/xmlerror.pxi":642
+              /* "src/lxml/xmlerror.pxi":652
  *                         if cstring_h.strncmp('string://__STRING__XSLT',
  *                                              c_str, 23) == 0:
  *                             c_str = '<xslt>'             # <<<<<<<<<<<<<<
@@ -43053,7 +43092,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
               __pyx_v_c_str = __pyx_k_xslt;
 
-              /* "src/lxml/xmlerror.pxi":640
+              /* "src/lxml/xmlerror.pxi":650
  *                 elif c_name_pos[0] == b'f':
  *                     if cstring_h.strncmp(c_name_pos, 'file %s', 7):
  *                         if cstring_h.strncmp('string://__STRING__XSLT',             # <<<<<<<<<<<<<<
@@ -43062,7 +43101,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
             }
 
-            /* "src/lxml/xmlerror.pxi":643
+            /* "src/lxml/xmlerror.pxi":653
  *                                              c_str, 23) == 0:
  *                             c_str = '<xslt>'
  *                         c_error.file = c_str             # <<<<<<<<<<<<<<
@@ -43071,7 +43110,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
             __pyx_v_c_error.file = __pyx_v_c_str;
 
-            /* "src/lxml/xmlerror.pxi":639
+            /* "src/lxml/xmlerror.pxi":649
  *                         c_element = c_str
  *                 elif c_name_pos[0] == b'f':
  *                     if cstring_h.strncmp(c_name_pos, 'file %s', 7):             # <<<<<<<<<<<<<<
@@ -43080,7 +43119,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
           }
 
-          /* "src/lxml/xmlerror.pxi":638
+          /* "src/lxml/xmlerror.pxi":648
  *                     if cstring_h.strncmp(c_name_pos, 'element %s', 10):
  *                         c_element = c_str
  *                 elif c_name_pos[0] == b'f':             # <<<<<<<<<<<<<<
@@ -43090,7 +43129,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
         }
         __pyx_L8:;
 
-        /* "src/lxml/xmlerror.pxi":630
+        /* "src/lxml/xmlerror.pxi":640
  *         if c_pos[0] == b'%':
  *             c_pos += 1
  *             if c_pos[0] == b's':  # "%s"             # <<<<<<<<<<<<<<
@@ -43100,7 +43139,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
         goto __pyx_L7;
       }
 
-      /* "src/lxml/xmlerror.pxi":644
+      /* "src/lxml/xmlerror.pxi":654
  *                             c_str = '<xslt>'
  *                         c_error.file = c_str
  *             elif c_pos[0] == b'd':  # "%d"             # <<<<<<<<<<<<<<
@@ -43110,7 +43149,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
       __pyx_t_1 = (((__pyx_v_c_pos[0]) == 'd') != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/xmlerror.pxi":645
+        /* "src/lxml/xmlerror.pxi":655
  *                         c_error.file = c_str
  *             elif c_pos[0] == b'd':  # "%d"
  *                 format_count += 1             # <<<<<<<<<<<<<<
@@ -43119,7 +43158,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
         __pyx_v_format_count = (__pyx_v_format_count + 1);
 
-        /* "src/lxml/xmlerror.pxi":646
+        /* "src/lxml/xmlerror.pxi":656
  *             elif c_pos[0] == b'd':  # "%d"
  *                 format_count += 1
  *                 c_int = cvarargs.va_int(args)             # <<<<<<<<<<<<<<
@@ -43128,7 +43167,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
         __pyx_v_c_int = va_int(__pyx_v_args);
 
-        /* "src/lxml/xmlerror.pxi":647
+        /* "src/lxml/xmlerror.pxi":657
  *                 format_count += 1
  *                 c_int = cvarargs.va_int(args)
  *                 if cstring_h.strncmp(c_name_pos, 'line %d', 7):             # <<<<<<<<<<<<<<
@@ -43138,7 +43177,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
         __pyx_t_1 = (strncmp(__pyx_v_c_name_pos, __pyx_k_line_d, 7) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/xmlerror.pxi":648
+          /* "src/lxml/xmlerror.pxi":658
  *                 c_int = cvarargs.va_int(args)
  *                 if cstring_h.strncmp(c_name_pos, 'line %d', 7):
  *                     c_error.line = c_int             # <<<<<<<<<<<<<<
@@ -43147,7 +43186,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
           __pyx_v_c_error.line = __pyx_v_c_int;
 
-          /* "src/lxml/xmlerror.pxi":647
+          /* "src/lxml/xmlerror.pxi":657
  *                 format_count += 1
  *                 c_int = cvarargs.va_int(args)
  *                 if cstring_h.strncmp(c_name_pos, 'line %d', 7):             # <<<<<<<<<<<<<<
@@ -43156,7 +43195,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
         }
 
-        /* "src/lxml/xmlerror.pxi":644
+        /* "src/lxml/xmlerror.pxi":654
  *                             c_str = '<xslt>'
  *                         c_error.file = c_str
  *             elif c_pos[0] == b'd':  # "%d"             # <<<<<<<<<<<<<<
@@ -43166,7 +43205,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
         goto __pyx_L7;
       }
 
-      /* "src/lxml/xmlerror.pxi":649
+      /* "src/lxml/xmlerror.pxi":659
  *                 if cstring_h.strncmp(c_name_pos, 'line %d', 7):
  *                     c_error.line = c_int
  *             elif c_pos[0] != b'%':  # "%%" == "%"             # <<<<<<<<<<<<<<
@@ -43176,7 +43215,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
       __pyx_t_1 = (((__pyx_v_c_pos[0]) != '%') != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/xmlerror.pxi":650
+        /* "src/lxml/xmlerror.pxi":660
  *                     c_error.line = c_int
  *             elif c_pos[0] != b'%':  # "%%" == "%"
  *                 format_count += 1             # <<<<<<<<<<<<<<
@@ -43185,7 +43224,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
         __pyx_v_format_count = (__pyx_v_format_count + 1);
 
-        /* "src/lxml/xmlerror.pxi":651
+        /* "src/lxml/xmlerror.pxi":661
  *             elif c_pos[0] != b'%':  # "%%" == "%"
  *                 format_count += 1
  *                 break  # unexpected format or end of string => abort             # <<<<<<<<<<<<<<
@@ -43194,7 +43233,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
         goto __pyx_L5_break;
 
-        /* "src/lxml/xmlerror.pxi":649
+        /* "src/lxml/xmlerror.pxi":659
  *                 if cstring_h.strncmp(c_name_pos, 'line %d', 7):
  *                     c_error.line = c_int
  *             elif c_pos[0] != b'%':  # "%%" == "%"             # <<<<<<<<<<<<<<
@@ -43204,7 +43243,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
       }
       __pyx_L7:;
 
-      /* "src/lxml/xmlerror.pxi":628
+      /* "src/lxml/xmlerror.pxi":638
  *     format_count = 0
  *     while c_pos[0]:
  *         if c_pos[0] == b'%':             # <<<<<<<<<<<<<<
@@ -43214,7 +43253,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
       goto __pyx_L6;
     }
 
-    /* "src/lxml/xmlerror.pxi":652
+    /* "src/lxml/xmlerror.pxi":662
  *                 format_count += 1
  *                 break  # unexpected format or end of string => abort
  *         elif c_pos[0] == b' ':             # <<<<<<<<<<<<<<
@@ -43224,7 +43263,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
     __pyx_t_1 = (((__pyx_v_c_pos[0]) == ' ') != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/xmlerror.pxi":653
+      /* "src/lxml/xmlerror.pxi":663
  *                 break  # unexpected format or end of string => abort
  *         elif c_pos[0] == b' ':
  *             if c_pos[1] != b'%':             # <<<<<<<<<<<<<<
@@ -43234,7 +43273,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
       __pyx_t_1 = (((__pyx_v_c_pos[1]) != '%') != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/xmlerror.pxi":654
+        /* "src/lxml/xmlerror.pxi":664
  *         elif c_pos[0] == b' ':
  *             if c_pos[1] != b'%':
  *                 c_name_pos = c_pos + 1             # <<<<<<<<<<<<<<
@@ -43243,7 +43282,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
         __pyx_v_c_name_pos = (__pyx_v_c_pos + 1);
 
-        /* "src/lxml/xmlerror.pxi":653
+        /* "src/lxml/xmlerror.pxi":663
  *                 break  # unexpected format or end of string => abort
  *         elif c_pos[0] == b' ':
  *             if c_pos[1] != b'%':             # <<<<<<<<<<<<<<
@@ -43252,7 +43291,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
       }
 
-      /* "src/lxml/xmlerror.pxi":652
+      /* "src/lxml/xmlerror.pxi":662
  *                 format_count += 1
  *                 break  # unexpected format or end of string => abort
  *         elif c_pos[0] == b' ':             # <<<<<<<<<<<<<<
@@ -43262,7 +43301,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
     }
     __pyx_L6:;
 
-    /* "src/lxml/xmlerror.pxi":655
+    /* "src/lxml/xmlerror.pxi":665
  *             if c_pos[1] != b'%':
  *                 c_name_pos = c_pos + 1
  *         c_pos += 1             # <<<<<<<<<<<<<<
@@ -43273,7 +43312,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
   }
   __pyx_L5_break:;
 
-  /* "src/lxml/xmlerror.pxi":656
+  /* "src/lxml/xmlerror.pxi":666
  *                 c_name_pos = c_pos + 1
  *         c_pos += 1
  *     cvarargs.va_end(args)             # <<<<<<<<<<<<<<
@@ -43282,7 +43321,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
   va_end(__pyx_v_args);
 
-  /* "src/lxml/xmlerror.pxi":658
+  /* "src/lxml/xmlerror.pxi":668
  *     cvarargs.va_end(args)
  * 
  *     c_message = NULL             # <<<<<<<<<<<<<<
@@ -43291,7 +43330,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
   __pyx_v_c_message = NULL;
 
-  /* "src/lxml/xmlerror.pxi":659
+  /* "src/lxml/xmlerror.pxi":669
  * 
  *     c_message = NULL
  *     if c_text is NULL:             # <<<<<<<<<<<<<<
@@ -43301,7 +43340,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
   __pyx_t_1 = ((__pyx_v_c_text == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":660
+    /* "src/lxml/xmlerror.pxi":670
  *     c_message = NULL
  *     if c_text is NULL:
  *         if c_element is not NULL and format_count == 1:             # <<<<<<<<<<<<<<
@@ -43319,7 +43358,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
     __pyx_L16_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "src/lxml/xmlerror.pxi":662
+      /* "src/lxml/xmlerror.pxi":672
  *         if c_element is not NULL and format_count == 1:
  *             # special case: a single occurrence of 'element %s'
  *             text_size    = cstring_h.strlen(msg)             # <<<<<<<<<<<<<<
@@ -43328,7 +43367,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
       __pyx_v_text_size = strlen(__pyx_v_msg);
 
-      /* "src/lxml/xmlerror.pxi":663
+      /* "src/lxml/xmlerror.pxi":673
  *             # special case: a single occurrence of 'element %s'
  *             text_size    = cstring_h.strlen(msg)
  *             element_size = cstring_h.strlen(c_element)             # <<<<<<<<<<<<<<
@@ -43337,7 +43376,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
       __pyx_v_element_size = strlen(__pyx_v_c_element);
 
-      /* "src/lxml/xmlerror.pxi":664
+      /* "src/lxml/xmlerror.pxi":674
  *             text_size    = cstring_h.strlen(msg)
  *             element_size = cstring_h.strlen(c_element)
  *             c_message = <char*>stdlib.malloc(             # <<<<<<<<<<<<<<
@@ -43346,7 +43385,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
       __pyx_v_c_message = ((char *)malloc((((__pyx_v_text_size + __pyx_v_element_size) + 1) * (sizeof(char)))));
 
-      /* "src/lxml/xmlerror.pxi":666
+      /* "src/lxml/xmlerror.pxi":676
  *             c_message = <char*>stdlib.malloc(
  *                 (text_size + element_size + 1) * sizeof(char))
  *             stdio.sprintf(c_message, msg, c_element)             # <<<<<<<<<<<<<<
@@ -43355,7 +43394,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
       sprintf(__pyx_v_c_message, __pyx_v_msg, __pyx_v_c_element);
 
-      /* "src/lxml/xmlerror.pxi":667
+      /* "src/lxml/xmlerror.pxi":677
  *                 (text_size + element_size + 1) * sizeof(char))
  *             stdio.sprintf(c_message, msg, c_element)
  *             c_error.message = c_message             # <<<<<<<<<<<<<<
@@ -43364,7 +43403,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
       __pyx_v_c_error.message = __pyx_v_c_message;
 
-      /* "src/lxml/xmlerror.pxi":660
+      /* "src/lxml/xmlerror.pxi":670
  *     c_message = NULL
  *     if c_text is NULL:
  *         if c_element is not NULL and format_count == 1:             # <<<<<<<<<<<<<<
@@ -43374,7 +43413,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
       goto __pyx_L15;
     }
 
-    /* "src/lxml/xmlerror.pxi":669
+    /* "src/lxml/xmlerror.pxi":679
  *             c_error.message = c_message
  *         else:
  *             c_error.message = ''             # <<<<<<<<<<<<<<
@@ -43386,7 +43425,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
     }
     __pyx_L15:;
 
-    /* "src/lxml/xmlerror.pxi":659
+    /* "src/lxml/xmlerror.pxi":669
  * 
  *     c_message = NULL
  *     if c_text is NULL:             # <<<<<<<<<<<<<<
@@ -43396,7 +43435,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
     goto __pyx_L14;
   }
 
-  /* "src/lxml/xmlerror.pxi":670
+  /* "src/lxml/xmlerror.pxi":680
  *         else:
  *             c_error.message = ''
  *     elif c_element is NULL:             # <<<<<<<<<<<<<<
@@ -43406,7 +43445,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
   __pyx_t_1 = ((__pyx_v_c_element == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":671
+    /* "src/lxml/xmlerror.pxi":681
  *             c_error.message = ''
  *     elif c_element is NULL:
  *         c_error.message = c_text             # <<<<<<<<<<<<<<
@@ -43415,7 +43454,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
     __pyx_v_c_error.message = __pyx_v_c_text;
 
-    /* "src/lxml/xmlerror.pxi":670
+    /* "src/lxml/xmlerror.pxi":680
  *         else:
  *             c_error.message = ''
  *     elif c_element is NULL:             # <<<<<<<<<<<<<<
@@ -43425,7 +43464,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
     goto __pyx_L14;
   }
 
-  /* "src/lxml/xmlerror.pxi":673
+  /* "src/lxml/xmlerror.pxi":683
  *         c_error.message = c_text
  *     else:
  *         text_size    = cstring_h.strlen(c_text)             # <<<<<<<<<<<<<<
@@ -43435,7 +43474,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
   /*else*/ {
     __pyx_v_text_size = strlen(__pyx_v_c_text);
 
-    /* "src/lxml/xmlerror.pxi":674
+    /* "src/lxml/xmlerror.pxi":684
  *     else:
  *         text_size    = cstring_h.strlen(c_text)
  *         element_size = cstring_h.strlen(c_element)             # <<<<<<<<<<<<<<
@@ -43444,7 +43483,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
     __pyx_v_element_size = strlen(__pyx_v_c_element);
 
-    /* "src/lxml/xmlerror.pxi":675
+    /* "src/lxml/xmlerror.pxi":685
  *         text_size    = cstring_h.strlen(c_text)
  *         element_size = cstring_h.strlen(c_element)
  *         c_message = <char*>stdlib.malloc(             # <<<<<<<<<<<<<<
@@ -43453,7 +43492,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
     __pyx_v_c_message = ((char *)malloc(((((__pyx_v_text_size + 12) + __pyx_v_element_size) + 1) * (sizeof(char)))));
 
-    /* "src/lxml/xmlerror.pxi":677
+    /* "src/lxml/xmlerror.pxi":687
  *         c_message = <char*>stdlib.malloc(
  *             (text_size + 12 + element_size + 1) * sizeof(char))
  *         stdio.sprintf(c_message, "%s, element '%s'", c_text, c_element)             # <<<<<<<<<<<<<<
@@ -43462,7 +43501,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
     sprintf(__pyx_v_c_message, __pyx_k_s_element_s, __pyx_v_c_text, __pyx_v_c_element);
 
-    /* "src/lxml/xmlerror.pxi":678
+    /* "src/lxml/xmlerror.pxi":688
  *             (text_size + 12 + element_size + 1) * sizeof(char))
  *         stdio.sprintf(c_message, "%s, element '%s'", c_text, c_element)
  *         c_error.message = c_message             # <<<<<<<<<<<<<<
@@ -43473,7 +43512,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
   }
   __pyx_L14:;
 
-  /* "src/lxml/xmlerror.pxi":680
+  /* "src/lxml/xmlerror.pxi":690
  *         c_error.message = c_message
  * 
  *     c_error.domain = xmlerror.XML_FROM_XSLT             # <<<<<<<<<<<<<<
@@ -43482,7 +43521,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
   __pyx_v_c_error.domain = XML_FROM_XSLT;
 
-  /* "src/lxml/xmlerror.pxi":681
+  /* "src/lxml/xmlerror.pxi":691
  * 
  *     c_error.domain = xmlerror.XML_FROM_XSLT
  *     c_error.code   = xmlerror.XML_ERR_OK    # what else?             # <<<<<<<<<<<<<<
@@ -43491,7 +43530,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
   __pyx_v_c_error.code = XML_ERR_OK;
 
-  /* "src/lxml/xmlerror.pxi":682
+  /* "src/lxml/xmlerror.pxi":692
  *     c_error.domain = xmlerror.XML_FROM_XSLT
  *     c_error.code   = xmlerror.XML_ERR_OK    # what else?
  *     c_error.level  = xmlerror.XML_ERR_ERROR # what else?             # <<<<<<<<<<<<<<
@@ -43500,7 +43539,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
   __pyx_v_c_error.level = XML_ERR_ERROR;
 
-  /* "src/lxml/xmlerror.pxi":683
+  /* "src/lxml/xmlerror.pxi":693
  *     c_error.code   = xmlerror.XML_ERR_OK    # what else?
  *     c_error.level  = xmlerror.XML_ERR_ERROR # what else?
  *     c_error.int2   = 0             # <<<<<<<<<<<<<<
@@ -43509,7 +43548,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
   __pyx_v_c_error.int2 = 0;
 
-  /* "src/lxml/xmlerror.pxi":685
+  /* "src/lxml/xmlerror.pxi":695
  *     c_error.int2   = 0
  * 
  *     _forwardError(c_log_handler, &c_error)             # <<<<<<<<<<<<<<
@@ -43518,7 +43557,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
   __pyx_f_4lxml_5etree__forwardError(__pyx_v_c_log_handler, (&__pyx_v_c_error));
 
-  /* "src/lxml/xmlerror.pxi":687
+  /* "src/lxml/xmlerror.pxi":697
  *     _forwardError(c_log_handler, &c_error)
  * 
  *     if c_message is not NULL:             # <<<<<<<<<<<<<<
@@ -43528,7 +43567,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
   __pyx_t_1 = ((__pyx_v_c_message != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":688
+    /* "src/lxml/xmlerror.pxi":698
  * 
  *     if c_message is not NULL:
  *         stdlib.free(c_message)             # <<<<<<<<<<<<<<
@@ -43537,7 +43576,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
     free(__pyx_v_c_message);
 
-    /* "src/lxml/xmlerror.pxi":687
+    /* "src/lxml/xmlerror.pxi":697
  *     _forwardError(c_log_handler, &c_error)
  * 
  *     if c_message is not NULL:             # <<<<<<<<<<<<<<
@@ -43546,7 +43585,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":604
+  /* "src/lxml/xmlerror.pxi":614
  *         _forwardError(c_log_handler, error)
  * 
  * cdef void _receiveXSLTError(void* c_log_handler, char* msg, ...) nogil:             # <<<<<<<<<<<<<<
@@ -43558,7 +43597,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
   __pyx_L0:;
 }
 
-/* "src/lxml/xmlerror.pxi":694
+/* "src/lxml/xmlerror.pxi":704
  * ################################################################################
  * 
  * cdef __initErrorConstants():             # <<<<<<<<<<<<<<
@@ -43596,34 +43635,34 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__initErrorConstants", 0);
 
-  /* "src/lxml/xmlerror.pxi":697
+  /* "src/lxml/xmlerror.pxi":707
  *     u"Called at setup time to parse the constants and build the classes below."
  *     global __ERROR_LEVELS, __ERROR_DOMAINS, __PARSER_ERROR_TYPES, __RELAXNG_ERROR_TYPES
  *     find_constants = re.compile(ur"\s*([a-zA-Z0-9_]+)\s*=\s*([0-9]+)").findall             # <<<<<<<<<<<<<<
  *     const_defs = ((ErrorLevels,          __ERROR_LEVELS),
  *                   (ErrorDomains,         __ERROR_DOMAINS),
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_findall); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_findall); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_find_constants = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":698
+  /* "src/lxml/xmlerror.pxi":708
  *     global __ERROR_LEVELS, __ERROR_DOMAINS, __PARSER_ERROR_TYPES, __RELAXNG_ERROR_TYPES
  *     find_constants = re.compile(ur"\s*([a-zA-Z0-9_]+)\s*=\s*([0-9]+)").findall
  *     const_defs = ((ErrorLevels,          __ERROR_LEVELS),             # <<<<<<<<<<<<<<
  *                   (ErrorDomains,         __ERROR_DOMAINS),
  *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
@@ -43632,16 +43671,16 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_4lxml_5etree___ERROR_LEVELS);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":699
+  /* "src/lxml/xmlerror.pxi":709
  *     find_constants = re.compile(ur"\s*([a-zA-Z0-9_]+)\s*=\s*([0-9]+)").findall
  *     const_defs = ((ErrorLevels,          __ERROR_LEVELS),
  *                   (ErrorDomains,         __ERROR_DOMAINS),             # <<<<<<<<<<<<<<
  *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
  *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorDomains); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorDomains); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
@@ -43650,16 +43689,16 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_4lxml_5etree___ERROR_DOMAINS);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":700
+  /* "src/lxml/xmlerror.pxi":710
  *     const_defs = ((ErrorLevels,          __ERROR_LEVELS),
  *                   (ErrorDomains,         __ERROR_DOMAINS),
  *                   (ErrorTypes,           __PARSER_ERROR_TYPES),             # <<<<<<<<<<<<<<
  *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))
  *     for cls, constant_tuple in const_defs:
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
@@ -43668,16 +43707,16 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_4lxml_5etree___PARSER_ERROR_TYPES);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":701
+  /* "src/lxml/xmlerror.pxi":711
  *                   (ErrorDomains,         __ERROR_DOMAINS),
  *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
  *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))             # <<<<<<<<<<<<<<
  *     for cls, constant_tuple in const_defs:
  *         reverse_dict = {}
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_RelaxNGErrorTypes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_RelaxNGErrorTypes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
@@ -43686,14 +43725,14 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":698
+  /* "src/lxml/xmlerror.pxi":708
  *     global __ERROR_LEVELS, __ERROR_DOMAINS, __PARSER_ERROR_TYPES, __RELAXNG_ERROR_TYPES
  *     find_constants = re.compile(ur"\s*([a-zA-Z0-9_]+)\s*=\s*([0-9]+)").findall
  *     const_defs = ((ErrorLevels,          __ERROR_LEVELS),             # <<<<<<<<<<<<<<
  *                   (ErrorDomains,         __ERROR_DOMAINS),
  *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
  */
-  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
@@ -43710,7 +43749,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   __pyx_v_const_defs = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":702
+  /* "src/lxml/xmlerror.pxi":712
  *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
  *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))
  *     for cls, constant_tuple in const_defs:             # <<<<<<<<<<<<<<
@@ -43721,9 +43760,9 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   for (;;) {
     if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
     #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     #else
-    __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     #endif
     if (likely(__pyx_t_5 != Py_None)) {
@@ -43736,7 +43775,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
@@ -43744,54 +43783,54 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
       __Pyx_INCREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_3);
       #else
-      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       #endif
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
-      __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_XDECREF_SET(__pyx_v_cls, __pyx_t_4);
     __pyx_t_4 = 0;
     __Pyx_XDECREF_SET(__pyx_v_constant_tuple, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/xmlerror.pxi":703
+    /* "src/lxml/xmlerror.pxi":713
  *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))
  *     for cls, constant_tuple in const_defs:
  *         reverse_dict = {}             # <<<<<<<<<<<<<<
  *         cls._names   = reverse_dict
  *         cls._getName = reverse_dict.get
  */
-    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_XDECREF_SET(__pyx_v_reverse_dict, ((PyObject*)__pyx_t_5));
     __pyx_t_5 = 0;
 
-    /* "src/lxml/xmlerror.pxi":704
+    /* "src/lxml/xmlerror.pxi":714
  *     for cls, constant_tuple in const_defs:
  *         reverse_dict = {}
  *         cls._names   = reverse_dict             # <<<<<<<<<<<<<<
  *         cls._getName = reverse_dict.get
  *         for constants in constant_tuple:
  */
-    if (__Pyx_PyObject_SetAttrStr(__pyx_v_cls, __pyx_n_s_names, __pyx_v_reverse_dict) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_PyObject_SetAttrStr(__pyx_v_cls, __pyx_n_s_names, __pyx_v_reverse_dict) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/xmlerror.pxi":705
+    /* "src/lxml/xmlerror.pxi":715
  *         reverse_dict = {}
  *         cls._names   = reverse_dict
  *         cls._getName = reverse_dict.get             # <<<<<<<<<<<<<<
  *         for constants in constant_tuple:
  *             #print len(constants) + 1
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_reverse_dict, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_reverse_dict, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    if (__Pyx_PyObject_SetAttrStr(__pyx_v_cls, __pyx_n_s_getName, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_PyObject_SetAttrStr(__pyx_v_cls, __pyx_n_s_getName, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "src/lxml/xmlerror.pxi":706
+    /* "src/lxml/xmlerror.pxi":716
  *         cls._names   = reverse_dict
  *         cls._getName = reverse_dict.get
  *         for constants in constant_tuple:             # <<<<<<<<<<<<<<
@@ -43802,26 +43841,26 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
       __pyx_t_5 = __pyx_v_constant_tuple; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
       __pyx_t_8 = NULL;
     } else {
-      __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_constant_tuple); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_constant_tuple); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     for (;;) {
       if (likely(!__pyx_t_8)) {
         if (likely(PyList_CheckExact(__pyx_t_5))) {
           if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           #endif
         } else {
           if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           #endif
         }
@@ -43831,7 +43870,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[1]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -43840,7 +43879,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
       __Pyx_XDECREF_SET(__pyx_v_constants, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "src/lxml/xmlerror.pxi":708
+      /* "src/lxml/xmlerror.pxi":718
  *         for constants in constant_tuple:
  *             #print len(constants) + 1
  *             for name, value in find_constants(constants):             # <<<<<<<<<<<<<<
@@ -43859,16 +43898,16 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
         }
       }
       if (!__pyx_t_2) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_constants); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_constants); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL;
         __Pyx_INCREF(__pyx_v_constants);
         __Pyx_GIVEREF(__pyx_v_constants);
         PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_constants);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       }
@@ -43877,9 +43916,9 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
         __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_10 = 0;
         __pyx_t_11 = NULL;
       } else {
-        __pyx_t_10 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_11 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       for (;;) {
@@ -43887,17 +43926,17 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
           if (likely(PyList_CheckExact(__pyx_t_4))) {
             if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_4)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_3);
             #endif
           } else {
             if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_3);
             #endif
           }
@@ -43907,7 +43946,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              else {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             break;
           }
@@ -43923,7 +43962,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
           if (unlikely(size != 2)) {
             if (size > 2) __Pyx_RaiseTooManyValuesError(2);
             else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           #if CYTHON_COMPILING_IN_CPYTHON
           if (likely(PyTuple_CheckExact(sequence))) {
@@ -43936,15 +43975,15 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
           __Pyx_INCREF(__pyx_t_9);
           __Pyx_INCREF(__pyx_t_2);
           #else
-          __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_9);
-          __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_2);
           #endif
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         } else {
           Py_ssize_t index = -1;
-          __pyx_t_12 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_12 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext;
@@ -43952,7 +43991,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
           __Pyx_GOTREF(__pyx_t_9);
           index = 1; __pyx_t_2 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_2)) goto __pyx_L9_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_2);
-          if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_t_13 = NULL;
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
           goto __pyx_L10_unpacking_done;
@@ -43960,7 +43999,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
           __pyx_t_13 = NULL;
           if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-          {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[1]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_L10_unpacking_done:;
         }
         __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_9);
@@ -43968,37 +44007,37 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
         __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_2);
         __pyx_t_2 = 0;
 
-        /* "src/lxml/xmlerror.pxi":709
+        /* "src/lxml/xmlerror.pxi":719
  *             #print len(constants) + 1
  *             for name, value in find_constants(constants):
  *                 value = int(value)             # <<<<<<<<<<<<<<
  *                 setattr(cls, name, value)
  *                 reverse_dict[value] = name
  */
-        __pyx_t_3 = PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "src/lxml/xmlerror.pxi":710
+        /* "src/lxml/xmlerror.pxi":720
  *             for name, value in find_constants(constants):
  *                 value = int(value)
  *                 setattr(cls, name, value)             # <<<<<<<<<<<<<<
  *                 reverse_dict[value] = name
  * 
  */
-        __pyx_t_14 = PyObject_SetAttr(__pyx_v_cls, __pyx_v_name, __pyx_v_value); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = PyObject_SetAttr(__pyx_v_cls, __pyx_v_name, __pyx_v_value); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-        /* "src/lxml/xmlerror.pxi":711
+        /* "src/lxml/xmlerror.pxi":721
  *                 value = int(value)
  *                 setattr(cls, name, value)
  *                 reverse_dict[value] = name             # <<<<<<<<<<<<<<
  * 
  *     # discard the global tuple references after use
  */
-        if (unlikely(PyDict_SetItem(__pyx_v_reverse_dict, __pyx_v_value, __pyx_v_name) < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(PyDict_SetItem(__pyx_v_reverse_dict, __pyx_v_value, __pyx_v_name) < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-        /* "src/lxml/xmlerror.pxi":708
+        /* "src/lxml/xmlerror.pxi":718
  *         for constants in constant_tuple:
  *             #print len(constants) + 1
  *             for name, value in find_constants(constants):             # <<<<<<<<<<<<<<
@@ -44008,7 +44047,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "src/lxml/xmlerror.pxi":706
+      /* "src/lxml/xmlerror.pxi":716
  *         cls._names   = reverse_dict
  *         cls._getName = reverse_dict.get
  *         for constants in constant_tuple:             # <<<<<<<<<<<<<<
@@ -44018,7 +44057,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "src/lxml/xmlerror.pxi":702
+    /* "src/lxml/xmlerror.pxi":712
  *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
  *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))
  *     for cls, constant_tuple in const_defs:             # <<<<<<<<<<<<<<
@@ -44028,7 +44067,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":714
+  /* "src/lxml/xmlerror.pxi":724
  * 
  *     # discard the global tuple references after use
  *     __ERROR_LEVELS = __ERROR_DOMAINS = __PARSER_ERROR_TYPES = __RELAXNG_ERROR_TYPES = None             # <<<<<<<<<<<<<<
@@ -44052,7 +44091,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES, Py_None);
   __Pyx_GIVEREF(Py_None);
 
-  /* "src/lxml/xmlerror.pxi":694
+  /* "src/lxml/xmlerror.pxi":704
  * ################################################################################
  * 
  * cdef __initErrorConstants():             # <<<<<<<<<<<<<<
@@ -101540,6 +101579,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
   PyObject *__pyx_v_url = NULL;
   PyObject *__pyx_v_pubid = NULL;
   PyObject *__pyx_v_data = NULL;
+  PyObject *__pyx_v_filename = NULL;
   char *__pyx_v_c_filename;
   xmlParserInput *__pyx_r;
   __Pyx_RefNannyDeclarations
@@ -101951,7 +101991,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *     if doc_ref is not None:
  *         if doc_ref._type == PARSER_DATA_STRING:             # <<<<<<<<<<<<<<
  *             data = doc_ref._data_bytes
- *             c_input = xmlparser.xmlNewInputStream(c_context)
+ *             filename = doc_ref._filename
  */
     switch (__pyx_v_doc_ref->_type) {
       case __pyx_e_4lxml_5etree_PARSER_DATA_STRING:
@@ -101960,8 +102000,8 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *     if doc_ref is not None:
  *         if doc_ref._type == PARSER_DATA_STRING:
  *             data = doc_ref._data_bytes             # <<<<<<<<<<<<<<
- *             c_input = xmlparser.xmlNewInputStream(c_context)
- *             if c_input is not NULL:
+ *             filename = doc_ref._filename
+ *             if not filename:
  */
       __pyx_t_10 = __pyx_v_doc_ref->_data_bytes;
       __Pyx_INCREF(__pyx_t_10);
@@ -101971,33 +102011,171 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
       /* "src/lxml/parser.pxi":448
  *         if doc_ref._type == PARSER_DATA_STRING:
  *             data = doc_ref._data_bytes
+ *             filename = doc_ref._filename             # <<<<<<<<<<<<<<
+ *             if not filename:
+ *                 filename = None
+ */
+      __pyx_t_10 = __pyx_v_doc_ref->_filename;
+      __Pyx_INCREF(__pyx_t_10);
+      __pyx_v_filename = __pyx_t_10;
+      __pyx_t_10 = 0;
+
+      /* "src/lxml/parser.pxi":449
+ *             data = doc_ref._data_bytes
+ *             filename = doc_ref._filename
+ *             if not filename:             # <<<<<<<<<<<<<<
+ *                 filename = None
+ *             elif not isinstance(filename, bytes):
+ */
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_filename); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = ((!__pyx_t_1) != 0);
+      if (__pyx_t_3) {
+
+        /* "src/lxml/parser.pxi":450
+ *             filename = doc_ref._filename
+ *             if not filename:
+ *                 filename = None             # <<<<<<<<<<<<<<
+ *             elif not isinstance(filename, bytes):
+ *                 # most likely a text URL
+ */
+        __Pyx_INCREF(Py_None);
+        __Pyx_DECREF_SET(__pyx_v_filename, Py_None);
+
+        /* "src/lxml/parser.pxi":449
+ *             data = doc_ref._data_bytes
+ *             filename = doc_ref._filename
+ *             if not filename:             # <<<<<<<<<<<<<<
+ *                 filename = None
+ *             elif not isinstance(filename, bytes):
+ */
+        goto __pyx_L22;
+      }
+
+      /* "src/lxml/parser.pxi":451
+ *             if not filename:
+ *                 filename = None
+ *             elif not isinstance(filename, bytes):             # <<<<<<<<<<<<<<
+ *                 # most likely a text URL
+ *                 filename = filename.encode('utf8')
+ */
+      __pyx_t_3 = PyBytes_Check(__pyx_v_filename); 
+      __pyx_t_1 = ((!(__pyx_t_3 != 0)) != 0);
+      if (__pyx_t_1) {
+
+        /* "src/lxml/parser.pxi":453
+ *             elif not isinstance(filename, bytes):
+ *                 # most likely a text URL
+ *                 filename = filename.encode('utf8')             # <<<<<<<<<<<<<<
+ *                 if not isinstance(filename, bytes):
+ *                     filename = None
+ */
+        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_filename, __pyx_n_s_encode); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_10);
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__61, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_7);
+        __pyx_t_7 = 0;
+
+        /* "src/lxml/parser.pxi":454
+ *                 # most likely a text URL
+ *                 filename = filename.encode('utf8')
+ *                 if not isinstance(filename, bytes):             # <<<<<<<<<<<<<<
+ *                     filename = None
+ * 
+ */
+        __pyx_t_1 = PyBytes_Check(__pyx_v_filename); 
+        __pyx_t_3 = ((!(__pyx_t_1 != 0)) != 0);
+        if (__pyx_t_3) {
+
+          /* "src/lxml/parser.pxi":455
+ *                 filename = filename.encode('utf8')
+ *                 if not isinstance(filename, bytes):
+ *                     filename = None             # <<<<<<<<<<<<<<
+ * 
+ *             c_input = xmlparser.xmlNewInputStream(c_context)
+ */
+          __Pyx_INCREF(Py_None);
+          __Pyx_DECREF_SET(__pyx_v_filename, Py_None);
+
+          /* "src/lxml/parser.pxi":454
+ *                 # most likely a text URL
+ *                 filename = filename.encode('utf8')
+ *                 if not isinstance(filename, bytes):             # <<<<<<<<<<<<<<
+ *                     filename = None
+ * 
+ */
+        }
+
+        /* "src/lxml/parser.pxi":451
+ *             if not filename:
+ *                 filename = None
+ *             elif not isinstance(filename, bytes):             # <<<<<<<<<<<<<<
+ *                 # most likely a text URL
+ *                 filename = filename.encode('utf8')
+ */
+      }
+      __pyx_L22:;
+
+      /* "src/lxml/parser.pxi":457
+ *                     filename = None
+ * 
  *             c_input = xmlparser.xmlNewInputStream(c_context)             # <<<<<<<<<<<<<<
  *             if c_input is not NULL:
- *                 c_input.base = _xcstr(data)
+ *                 if filename is not None:
  */
       __pyx_v_c_input = xmlNewInputStream(__pyx_v_c_context);
 
-      /* "src/lxml/parser.pxi":449
- *             data = doc_ref._data_bytes
+      /* "src/lxml/parser.pxi":458
+ * 
  *             c_input = xmlparser.xmlNewInputStream(c_context)
  *             if c_input is not NULL:             # <<<<<<<<<<<<<<
+ *                 if filename is not None:
+ *                     c_input.filename = <char *>tree.xmlStrdup(_xcstr(filename))
+ */
+      __pyx_t_3 = ((__pyx_v_c_input != NULL) != 0);
+      if (__pyx_t_3) {
+
+        /* "src/lxml/parser.pxi":459
+ *             c_input = xmlparser.xmlNewInputStream(c_context)
+ *             if c_input is not NULL:
+ *                 if filename is not None:             # <<<<<<<<<<<<<<
+ *                     c_input.filename = <char *>tree.xmlStrdup(_xcstr(filename))
+ *                 c_input.base = _xcstr(data)
+ */
+        __pyx_t_3 = (__pyx_v_filename != Py_None);
+        __pyx_t_1 = (__pyx_t_3 != 0);
+        if (__pyx_t_1) {
+
+          /* "src/lxml/parser.pxi":460
+ *             if c_input is not NULL:
+ *                 if filename is not None:
+ *                     c_input.filename = <char *>tree.xmlStrdup(_xcstr(filename))             # <<<<<<<<<<<<<<
  *                 c_input.base = _xcstr(data)
  *                 c_input.length = python.PyBytes_GET_SIZE(data)
  */
-      __pyx_t_1 = ((__pyx_v_c_input != NULL) != 0);
-      if (__pyx_t_1) {
+          __pyx_v_c_input->filename = ((char *)xmlStrdup((const xmlChar*)PyBytes_AS_STRING(__pyx_v_filename)));
 
-        /* "src/lxml/parser.pxi":450
+          /* "src/lxml/parser.pxi":459
  *             c_input = xmlparser.xmlNewInputStream(c_context)
  *             if c_input is not NULL:
+ *                 if filename is not None:             # <<<<<<<<<<<<<<
+ *                     c_input.filename = <char *>tree.xmlStrdup(_xcstr(filename))
+ *                 c_input.base = _xcstr(data)
+ */
+        }
+
+        /* "src/lxml/parser.pxi":461
+ *                 if filename is not None:
+ *                     c_input.filename = <char *>tree.xmlStrdup(_xcstr(filename))
  *                 c_input.base = _xcstr(data)             # <<<<<<<<<<<<<<
  *                 c_input.length = python.PyBytes_GET_SIZE(data)
  *                 c_input.cur = c_input.base
  */
         __pyx_v_c_input->base = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_data);
 
-        /* "src/lxml/parser.pxi":451
- *             if c_input is not NULL:
+        /* "src/lxml/parser.pxi":462
+ *                     c_input.filename = <char *>tree.xmlStrdup(_xcstr(filename))
  *                 c_input.base = _xcstr(data)
  *                 c_input.length = python.PyBytes_GET_SIZE(data)             # <<<<<<<<<<<<<<
  *                 c_input.cur = c_input.base
@@ -102005,7 +102183,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  */
         __pyx_v_c_input->length = PyBytes_GET_SIZE(__pyx_v_data);
 
-        /* "src/lxml/parser.pxi":452
+        /* "src/lxml/parser.pxi":463
  *                 c_input.base = _xcstr(data)
  *                 c_input.length = python.PyBytes_GET_SIZE(data)
  *                 c_input.cur = c_input.base             # <<<<<<<<<<<<<<
@@ -102015,7 +102193,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
         __pyx_t_11 = __pyx_v_c_input->base;
         __pyx_v_c_input->cur = __pyx_t_11;
 
-        /* "src/lxml/parser.pxi":453
+        /* "src/lxml/parser.pxi":464
  *                 c_input.length = python.PyBytes_GET_SIZE(data)
  *                 c_input.cur = c_input.base
  *                 c_input.end = c_input.base + c_input.length             # <<<<<<<<<<<<<<
@@ -102024,12 +102202,12 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  */
         __pyx_v_c_input->end = (__pyx_v_c_input->base + __pyx_v_c_input->length);
 
-        /* "src/lxml/parser.pxi":449
- *             data = doc_ref._data_bytes
+        /* "src/lxml/parser.pxi":458
+ * 
  *             c_input = xmlparser.xmlNewInputStream(c_context)
  *             if c_input is not NULL:             # <<<<<<<<<<<<<<
- *                 c_input.base = _xcstr(data)
- *                 c_input.length = python.PyBytes_GET_SIZE(data)
+ *                 if filename is not None:
+ *                     c_input.filename = <char *>tree.xmlStrdup(_xcstr(filename))
  */
       }
 
@@ -102038,11 +102216,11 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *     if doc_ref is not None:
  *         if doc_ref._type == PARSER_DATA_STRING:             # <<<<<<<<<<<<<<
  *             data = doc_ref._data_bytes
- *             c_input = xmlparser.xmlNewInputStream(c_context)
+ *             filename = doc_ref._filename
  */
       break;
 
-      /* "src/lxml/parser.pxi":454
+      /* "src/lxml/parser.pxi":465
  *                 c_input.cur = c_input.base
  *                 c_input.end = c_input.base + c_input.length
  *         elif doc_ref._type == PARSER_DATA_FILENAME:             # <<<<<<<<<<<<<<
@@ -102051,7 +102229,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  */
       case __pyx_e_4lxml_5etree_PARSER_DATA_FILENAME:
 
-      /* "src/lxml/parser.pxi":455
+      /* "src/lxml/parser.pxi":466
  *                 c_input.end = c_input.base + c_input.length
  *         elif doc_ref._type == PARSER_DATA_FILENAME:
  *             data = None             # <<<<<<<<<<<<<<
@@ -102061,19 +102239,19 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
       __Pyx_INCREF(Py_None);
       __pyx_v_data = Py_None;
 
-      /* "src/lxml/parser.pxi":456
+      /* "src/lxml/parser.pxi":467
  *         elif doc_ref._type == PARSER_DATA_FILENAME:
  *             data = None
  *             c_filename = _cstr(doc_ref._filename)             # <<<<<<<<<<<<<<
  *             with nogil:
  *                 # free the GIL as we might do serious I/O here
  */
-      __pyx_t_10 = __pyx_v_doc_ref->_filename;
-      __Pyx_INCREF(__pyx_t_10);
-      __pyx_v_c_filename = PyBytes_AS_STRING(__pyx_t_10);
-      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __pyx_t_7 = __pyx_v_doc_ref->_filename;
+      __Pyx_INCREF(__pyx_t_7);
+      __pyx_v_c_filename = PyBytes_AS_STRING(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "src/lxml/parser.pxi":457
+      /* "src/lxml/parser.pxi":468
  *             data = None
  *             c_filename = _cstr(doc_ref._filename)
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -102087,7 +102265,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
           #endif
           /*try:*/ {
 
-            /* "src/lxml/parser.pxi":459
+            /* "src/lxml/parser.pxi":470
  *             with nogil:
  *                 # free the GIL as we might do serious I/O here
  *                 c_input = xmlparser.xmlNewInputFromFile(             # <<<<<<<<<<<<<<
@@ -102097,7 +102275,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
             __pyx_v_c_input = xmlNewInputFromFile(__pyx_v_c_context, __pyx_v_c_filename);
           }
 
-          /* "src/lxml/parser.pxi":457
+          /* "src/lxml/parser.pxi":468
  *             data = None
  *             c_filename = _cstr(doc_ref._filename)
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -102109,13 +102287,13 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
               #ifdef WITH_THREAD
               Py_BLOCK_THREADS
               #endif
-              goto __pyx_L25;
+              goto __pyx_L28;
             }
-            __pyx_L25:;
+            __pyx_L28:;
           }
       }
 
-      /* "src/lxml/parser.pxi":454
+      /* "src/lxml/parser.pxi":465
  *                 c_input.cur = c_input.base
  *                 c_input.end = c_input.base + c_input.length
  *         elif doc_ref._type == PARSER_DATA_FILENAME:             # <<<<<<<<<<<<<<
@@ -102124,7 +102302,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  */
       break;
 
-      /* "src/lxml/parser.pxi":461
+      /* "src/lxml/parser.pxi":472
  *                 c_input = xmlparser.xmlNewInputFromFile(
  *                     c_context, c_filename)
  *         elif doc_ref._type == PARSER_DATA_FILE:             # <<<<<<<<<<<<<<
@@ -102133,47 +102311,47 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  */
       case __pyx_e_4lxml_5etree_PARSER_DATA_FILE:
 
-      /* "src/lxml/parser.pxi":463
+      /* "src/lxml/parser.pxi":474
  *         elif doc_ref._type == PARSER_DATA_FILE:
  *             file_context = _FileReaderContext(doc_ref._file, context, url,
  *                                               None, doc_ref._close_file)             # <<<<<<<<<<<<<<
  *             c_input = file_context._createParserInput(c_context)
  *             data = file_context
  */
-      __pyx_t_10 = __Pyx_PyBool_FromLong(__pyx_v_doc_ref->_close_file); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_10);
+      __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_doc_ref->_close_file); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_7);
 
-      /* "src/lxml/parser.pxi":462
+      /* "src/lxml/parser.pxi":473
  *                     c_context, c_filename)
  *         elif doc_ref._type == PARSER_DATA_FILE:
  *             file_context = _FileReaderContext(doc_ref._file, context, url,             # <<<<<<<<<<<<<<
  *                                               None, doc_ref._close_file)
  *             c_input = file_context._createParserInput(c_context)
  */
-      __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
+      __pyx_t_10 = PyTuple_New(5); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_10);
       __Pyx_INCREF(__pyx_v_doc_ref->_file);
       __Pyx_GIVEREF(__pyx_v_doc_ref->_file);
-      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_doc_ref->_file);
+      PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_doc_ref->_file);
       __Pyx_INCREF(((PyObject *)__pyx_v_context));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_context));
-      PyTuple_SET_ITEM(__pyx_t_7, 1, ((PyObject *)__pyx_v_context));
+      PyTuple_SET_ITEM(__pyx_t_10, 1, ((PyObject *)__pyx_v_context));
       __Pyx_INCREF(__pyx_v_url);
       __Pyx_GIVEREF(__pyx_v_url);
-      PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_v_url);
+      PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_v_url);
       __Pyx_INCREF(Py_None);
       __Pyx_GIVEREF(Py_None);
-      PyTuple_SET_ITEM(__pyx_t_7, 3, Py_None);
-      __Pyx_GIVEREF(__pyx_t_10);
-      PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_t_10);
-      __pyx_t_10 = 0;
-      __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__FileReaderContext), __pyx_t_7, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_10);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_v_file_context = ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_t_10);
-      __pyx_t_10 = 0;
+      PyTuple_SET_ITEM(__pyx_t_10, 3, Py_None);
+      __Pyx_GIVEREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_10, 4, __pyx_t_7);
+      __pyx_t_7 = 0;
+      __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__FileReaderContext), __pyx_t_10, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __pyx_v_file_context = ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_t_7);
+      __pyx_t_7 = 0;
 
-      /* "src/lxml/parser.pxi":464
+      /* "src/lxml/parser.pxi":475
  *             file_context = _FileReaderContext(doc_ref._file, context, url,
  *                                               None, doc_ref._close_file)
  *             c_input = file_context._createParserInput(c_context)             # <<<<<<<<<<<<<<
@@ -102182,7 +102360,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  */
       __pyx_v_c_input = __pyx_f_4lxml_5etree_18_FileReaderContext__createParserInput(__pyx_v_file_context, __pyx_v_c_context);
 
-      /* "src/lxml/parser.pxi":465
+      /* "src/lxml/parser.pxi":476
  *                                               None, doc_ref._close_file)
  *             c_input = file_context._createParserInput(c_context)
  *             data = file_context             # <<<<<<<<<<<<<<
@@ -102192,7 +102370,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
       __Pyx_INCREF(((PyObject *)__pyx_v_file_context));
       __pyx_v_data = ((PyObject *)__pyx_v_file_context);
 
-      /* "src/lxml/parser.pxi":461
+      /* "src/lxml/parser.pxi":472
  *                 c_input = xmlparser.xmlNewInputFromFile(
  *                     c_context, c_filename)
  *         elif doc_ref._type == PARSER_DATA_FILE:             # <<<<<<<<<<<<<<
@@ -102202,7 +102380,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
       break;
       default:
 
-      /* "src/lxml/parser.pxi":467
+      /* "src/lxml/parser.pxi":478
  *             data = file_context
  *         else:
  *             data = None             # <<<<<<<<<<<<<<
@@ -102212,7 +102390,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
       __Pyx_INCREF(Py_None);
       __pyx_v_data = Py_None;
 
-      /* "src/lxml/parser.pxi":468
+      /* "src/lxml/parser.pxi":479
  *         else:
  *             data = None
  *             c_input = NULL             # <<<<<<<<<<<<<<
@@ -102223,7 +102401,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
       break;
     }
 
-    /* "src/lxml/parser.pxi":470
+    /* "src/lxml/parser.pxi":481
  *             c_input = NULL
  * 
  *         if data is not None:             # <<<<<<<<<<<<<<
@@ -102234,16 +102412,16 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
     __pyx_t_3 = (__pyx_t_1 != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/parser.pxi":471
+      /* "src/lxml/parser.pxi":482
  * 
  *         if data is not None:
  *             context._storage.add(data)             # <<<<<<<<<<<<<<
  *         if c_input is not NULL:
  *             return c_input
  */
-      __pyx_t_12 = __pyx_f_4lxml_5etree_10_TempStore_add(__pyx_v_context->_storage, __pyx_v_data); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __pyx_f_4lxml_5etree_10_TempStore_add(__pyx_v_context->_storage, __pyx_v_data); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/parser.pxi":470
+      /* "src/lxml/parser.pxi":481
  *             c_input = NULL
  * 
  *         if data is not None:             # <<<<<<<<<<<<<<
@@ -102252,7 +102430,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  */
     }
 
-    /* "src/lxml/parser.pxi":472
+    /* "src/lxml/parser.pxi":483
  *         if data is not None:
  *             context._storage.add(data)
  *         if c_input is not NULL:             # <<<<<<<<<<<<<<
@@ -102262,7 +102440,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
     __pyx_t_3 = ((__pyx_v_c_input != NULL) != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/parser.pxi":473
+      /* "src/lxml/parser.pxi":484
  *             context._storage.add(data)
  *         if c_input is not NULL:
  *             return c_input             # <<<<<<<<<<<<<<
@@ -102272,7 +102450,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
       __pyx_r = __pyx_v_c_input;
       goto __pyx_L0;
 
-      /* "src/lxml/parser.pxi":472
+      /* "src/lxml/parser.pxi":483
  *         if data is not None:
  *             context._storage.add(data)
  *         if c_input is not NULL:             # <<<<<<<<<<<<<<
@@ -102290,7 +102468,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  */
   }
 
-  /* "src/lxml/parser.pxi":475
+  /* "src/lxml/parser.pxi":486
  *             return c_input
  * 
  *     if __DEFAULT_ENTITY_LOADER is NULL:             # <<<<<<<<<<<<<<
@@ -102300,7 +102478,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
   __pyx_t_3 = ((__pyx_v_4lxml_5etree___DEFAULT_ENTITY_LOADER == NULL) != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/parser.pxi":476
+    /* "src/lxml/parser.pxi":487
  * 
  *     if __DEFAULT_ENTITY_LOADER is NULL:
  *         return NULL             # <<<<<<<<<<<<<<
@@ -102310,7 +102488,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
     __pyx_r = NULL;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":475
+    /* "src/lxml/parser.pxi":486
  *             return c_input
  * 
  *     if __DEFAULT_ENTITY_LOADER is NULL:             # <<<<<<<<<<<<<<
@@ -102319,7 +102497,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  */
   }
 
-  /* "src/lxml/parser.pxi":478
+  /* "src/lxml/parser.pxi":489
  *         return NULL
  * 
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -102333,7 +102511,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
       #endif
       /*try:*/ {
 
-        /* "src/lxml/parser.pxi":480
+        /* "src/lxml/parser.pxi":491
  *     with nogil:
  *         # free the GIL as we might do serious I/O here (e.g. HTTP)
  *         c_input = __DEFAULT_ENTITY_LOADER(c_url, c_pubid, c_context)             # <<<<<<<<<<<<<<
@@ -102343,7 +102521,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
         __pyx_v_c_input = __pyx_v_4lxml_5etree___DEFAULT_ENTITY_LOADER(__pyx_v_c_url, __pyx_v_c_pubid, __pyx_v_c_context);
       }
 
-      /* "src/lxml/parser.pxi":478
+      /* "src/lxml/parser.pxi":489
  *         return NULL
  * 
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -102355,13 +102533,13 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
           #ifdef WITH_THREAD
           Py_BLOCK_THREADS
           #endif
-          goto __pyx_L31;
+          goto __pyx_L34;
         }
-        __pyx_L31:;
+        __pyx_L34:;
       }
   }
 
-  /* "src/lxml/parser.pxi":481
+  /* "src/lxml/parser.pxi":492
  *         # free the GIL as we might do serious I/O here (e.g. HTTP)
  *         c_input = __DEFAULT_ENTITY_LOADER(c_url, c_pubid, c_context)
  *     return c_input             # <<<<<<<<<<<<<<
@@ -102394,6 +102572,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
   __Pyx_XDECREF(__pyx_v_url);
   __Pyx_XDECREF(__pyx_v_pubid);
   __Pyx_XDECREF(__pyx_v_data);
+  __Pyx_XDECREF(__pyx_v_filename);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   PyGILState_Release(__pyx_gilstate_save);
@@ -102401,7 +102580,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":501
+/* "src/lxml/parser.pxi":512
  *     cdef bint _collect_ids
  * 
  *     def __cinit__(self):             # <<<<<<<<<<<<<<
@@ -102435,7 +102614,7 @@ static int __pyx_pf_4lxml_5etree_14_ParserContext___cinit__(struct __pyx_obj_4lx
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__cinit__", 0);
 
-  /* "src/lxml/parser.pxi":502
+  /* "src/lxml/parser.pxi":513
  * 
  *     def __cinit__(self):
  *         self._c_ctxt = NULL             # <<<<<<<<<<<<<<
@@ -102444,7 +102623,7 @@ static int __pyx_pf_4lxml_5etree_14_ParserContext___cinit__(struct __pyx_obj_4lx
  */
   __pyx_v_self->_c_ctxt = NULL;
 
-  /* "src/lxml/parser.pxi":503
+  /* "src/lxml/parser.pxi":514
  *     def __cinit__(self):
  *         self._c_ctxt = NULL
  *         self._collect_ids = True             # <<<<<<<<<<<<<<
@@ -102453,7 +102632,7 @@ static int __pyx_pf_4lxml_5etree_14_ParserContext___cinit__(struct __pyx_obj_4lx
  */
   __pyx_v_self->_collect_ids = 1;
 
-  /* "src/lxml/parser.pxi":504
+  /* "src/lxml/parser.pxi":515
  *         self._c_ctxt = NULL
  *         self._collect_ids = True
  *         if not config.ENABLE_THREADING:             # <<<<<<<<<<<<<<
@@ -102463,7 +102642,7 @@ static int __pyx_pf_4lxml_5etree_14_ParserContext___cinit__(struct __pyx_obj_4lx
   __pyx_t_1 = ((!(ENABLE_THREADING != 0)) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":505
+    /* "src/lxml/parser.pxi":516
  *         self._collect_ids = True
  *         if not config.ENABLE_THREADING:
  *             self._lock = NULL             # <<<<<<<<<<<<<<
@@ -102472,7 +102651,7 @@ static int __pyx_pf_4lxml_5etree_14_ParserContext___cinit__(struct __pyx_obj_4lx
  */
     __pyx_v_self->_lock = NULL;
 
-    /* "src/lxml/parser.pxi":504
+    /* "src/lxml/parser.pxi":515
  *         self._c_ctxt = NULL
  *         self._collect_ids = True
  *         if not config.ENABLE_THREADING:             # <<<<<<<<<<<<<<
@@ -102482,7 +102661,7 @@ static int __pyx_pf_4lxml_5etree_14_ParserContext___cinit__(struct __pyx_obj_4lx
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":507
+  /* "src/lxml/parser.pxi":518
  *             self._lock = NULL
  *         else:
  *             self._lock = python.PyThread_allocate_lock()             # <<<<<<<<<<<<<<
@@ -102494,14 +102673,14 @@ static int __pyx_pf_4lxml_5etree_14_ParserContext___cinit__(struct __pyx_obj_4lx
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":508
+  /* "src/lxml/parser.pxi":519
  *         else:
  *             self._lock = python.PyThread_allocate_lock()
  *         self._error_log = _ErrorLog()             # <<<<<<<<<<<<<<
  * 
  *     def __dealloc__(self):
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __Pyx_GOTREF(__pyx_v_self->_error_log);
@@ -102509,7 +102688,7 @@ static int __pyx_pf_4lxml_5etree_14_ParserContext___cinit__(struct __pyx_obj_4lx
   __pyx_v_self->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "src/lxml/parser.pxi":501
+  /* "src/lxml/parser.pxi":512
  *     cdef bint _collect_ids
  * 
  *     def __cinit__(self):             # <<<<<<<<<<<<<<
@@ -102529,7 +102708,7 @@ static int __pyx_pf_4lxml_5etree_14_ParserContext___cinit__(struct __pyx_obj_4lx
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":510
+/* "src/lxml/parser.pxi":521
  *         self._error_log = _ErrorLog()
  * 
  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
@@ -102554,7 +102733,7 @@ static void __pyx_pf_4lxml_5etree_14_ParserContext_2__dealloc__(struct __pyx_obj
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__dealloc__", 0);
 
-  /* "src/lxml/parser.pxi":511
+  /* "src/lxml/parser.pxi":522
  * 
  *     def __dealloc__(self):
  *         if config.ENABLE_THREADING and self._lock is not NULL:             # <<<<<<<<<<<<<<
@@ -102572,7 +102751,7 @@ static void __pyx_pf_4lxml_5etree_14_ParserContext_2__dealloc__(struct __pyx_obj
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":512
+    /* "src/lxml/parser.pxi":523
  *     def __dealloc__(self):
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             python.PyThread_free_lock(self._lock)             # <<<<<<<<<<<<<<
@@ -102581,7 +102760,7 @@ static void __pyx_pf_4lxml_5etree_14_ParserContext_2__dealloc__(struct __pyx_obj
  */
     PyThread_free_lock(__pyx_v_self->_lock);
 
-    /* "src/lxml/parser.pxi":511
+    /* "src/lxml/parser.pxi":522
  * 
  *     def __dealloc__(self):
  *         if config.ENABLE_THREADING and self._lock is not NULL:             # <<<<<<<<<<<<<<
@@ -102590,7 +102769,7 @@ static void __pyx_pf_4lxml_5etree_14_ParserContext_2__dealloc__(struct __pyx_obj
  */
   }
 
-  /* "src/lxml/parser.pxi":513
+  /* "src/lxml/parser.pxi":524
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             python.PyThread_free_lock(self._lock)
  *         if self._c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -102600,7 +102779,7 @@ static void __pyx_pf_4lxml_5etree_14_ParserContext_2__dealloc__(struct __pyx_obj
   __pyx_t_1 = ((__pyx_v_self->_c_ctxt != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":514
+    /* "src/lxml/parser.pxi":525
  *             python.PyThread_free_lock(self._lock)
  *         if self._c_ctxt is not NULL:
  *             xmlparser.xmlFreeParserCtxt(self._c_ctxt)             # <<<<<<<<<<<<<<
@@ -102609,7 +102788,7 @@ static void __pyx_pf_4lxml_5etree_14_ParserContext_2__dealloc__(struct __pyx_obj
  */
     xmlFreeParserCtxt(__pyx_v_self->_c_ctxt);
 
-    /* "src/lxml/parser.pxi":513
+    /* "src/lxml/parser.pxi":524
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             python.PyThread_free_lock(self._lock)
  *         if self._c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -102618,7 +102797,7 @@ static void __pyx_pf_4lxml_5etree_14_ParserContext_2__dealloc__(struct __pyx_obj
  */
   }
 
-  /* "src/lxml/parser.pxi":510
+  /* "src/lxml/parser.pxi":521
  *         self._error_log = _ErrorLog()
  * 
  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
@@ -102630,7 +102809,7 @@ static void __pyx_pf_4lxml_5etree_14_ParserContext_2__dealloc__(struct __pyx_obj
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/parser.pxi":516
+/* "src/lxml/parser.pxi":527
  *             xmlparser.xmlFreeParserCtxt(self._c_ctxt)
  * 
  *     cdef _ParserContext _copy(self):             # <<<<<<<<<<<<<<
@@ -102651,14 +102830,14 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_14_Par
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_copy", 0);
 
-  /* "src/lxml/parser.pxi":518
+  /* "src/lxml/parser.pxi":529
  *     cdef _ParserContext _copy(self):
  *         cdef _ParserContext context
  *         context = self.__class__()             # <<<<<<<<<<<<<<
  *         context._collect_ids = self._collect_ids
  *         context._validator = self._validator.copy()
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -102671,18 +102850,18 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_14_Par
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__ParserContext))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__ParserContext))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":519
+  /* "src/lxml/parser.pxi":530
  *         cdef _ParserContext context
  *         context = self.__class__()
  *         context._collect_ids = self._collect_ids             # <<<<<<<<<<<<<<
@@ -102692,14 +102871,14 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_14_Par
   __pyx_t_4 = __pyx_v_self->_collect_ids;
   __pyx_v_context->_collect_ids = __pyx_t_4;
 
-  /* "src/lxml/parser.pxi":520
+  /* "src/lxml/parser.pxi":531
  *         context = self.__class__()
  *         context._collect_ids = self._collect_ids
  *         context._validator = self._validator.copy()             # <<<<<<<<<<<<<<
  *         _initParserContext(context, self._resolvers._copy(), NULL)
  *         return context
  */
-  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_copy(__pyx_v_self->_validator)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_copy(__pyx_v_self->_validator)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_context->_validator);
@@ -102707,21 +102886,21 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_14_Par
   __pyx_v_context->_validator = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":521
+  /* "src/lxml/parser.pxi":532
  *         context._collect_ids = self._collect_ids
  *         context._validator = self._validator.copy()
  *         _initParserContext(context, self._resolvers._copy(), NULL)             # <<<<<<<<<<<<<<
  *         return context
  * 
  */
-  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_17_ResolverRegistry__copy(__pyx_v_self->__pyx_base._resolvers)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_17_ResolverRegistry__copy(__pyx_v_self->__pyx_base._resolvers)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __pyx_f_4lxml_5etree__initParserContext(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __pyx_f_4lxml_5etree__initParserContext(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 532; __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;
 
-  /* "src/lxml/parser.pxi":522
+  /* "src/lxml/parser.pxi":533
  *         context._validator = self._validator.copy()
  *         _initParserContext(context, self._resolvers._copy(), NULL)
  *         return context             # <<<<<<<<<<<<<<
@@ -102733,7 +102912,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_14_Par
   __pyx_r = __pyx_v_context;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":516
+  /* "src/lxml/parser.pxi":527
  *             xmlparser.xmlFreeParserCtxt(self._c_ctxt)
  * 
  *     cdef _ParserContext _copy(self):             # <<<<<<<<<<<<<<
@@ -102755,7 +102934,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_14_Par
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":524
+/* "src/lxml/parser.pxi":535
  *         return context
  * 
  *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
@@ -102767,7 +102946,7 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__initParserContext(struct __py
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_initParserContext", 0);
 
-  /* "src/lxml/parser.pxi":525
+  /* "src/lxml/parser.pxi":536
  * 
  *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):
  *         self._c_ctxt = c_ctxt             # <<<<<<<<<<<<<<
@@ -102776,7 +102955,7 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__initParserContext(struct __py
  */
   __pyx_v_self->_c_ctxt = __pyx_v_c_ctxt;
 
-  /* "src/lxml/parser.pxi":526
+  /* "src/lxml/parser.pxi":537
  *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):
  *         self._c_ctxt = c_ctxt
  *         c_ctxt._private = <void*>self             # <<<<<<<<<<<<<<
@@ -102785,7 +102964,7 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__initParserContext(struct __py
  */
   __pyx_v_c_ctxt->_private = ((void *)__pyx_v_self);
 
-  /* "src/lxml/parser.pxi":524
+  /* "src/lxml/parser.pxi":535
  *         return context
  * 
  *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
@@ -102797,7 +102976,7 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__initParserContext(struct __py
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/parser.pxi":528
+/* "src/lxml/parser.pxi":539
  *         c_ctxt._private = <void*>self
  * 
  *     cdef void _resetParserContext(self):             # <<<<<<<<<<<<<<
@@ -102810,7 +102989,7 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__resetParserContext(struct __p
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_resetParserContext", 0);
 
-  /* "src/lxml/parser.pxi":529
+  /* "src/lxml/parser.pxi":540
  * 
  *     cdef void _resetParserContext(self):
  *         if self._c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -102820,7 +102999,7 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__resetParserContext(struct __p
   __pyx_t_1 = ((__pyx_v_self->_c_ctxt != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":530
+    /* "src/lxml/parser.pxi":541
  *     cdef void _resetParserContext(self):
  *         if self._c_ctxt is not NULL:
  *             if self._c_ctxt.html:             # <<<<<<<<<<<<<<
@@ -102830,7 +103009,7 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__resetParserContext(struct __p
     __pyx_t_1 = (__pyx_v_self->_c_ctxt->html != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":531
+      /* "src/lxml/parser.pxi":542
  *         if self._c_ctxt is not NULL:
  *             if self._c_ctxt.html:
  *                 htmlparser.htmlCtxtReset(self._c_ctxt)             # <<<<<<<<<<<<<<
@@ -102839,7 +103018,7 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__resetParserContext(struct __p
  */
       htmlCtxtReset(__pyx_v_self->_c_ctxt);
 
-      /* "src/lxml/parser.pxi":532
+      /* "src/lxml/parser.pxi":543
  *             if self._c_ctxt.html:
  *                 htmlparser.htmlCtxtReset(self._c_ctxt)
  *                 self._c_ctxt.disableSAX = 0 # work around bug in libxml2             # <<<<<<<<<<<<<<
@@ -102848,7 +103027,7 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__resetParserContext(struct __p
  */
       __pyx_v_self->_c_ctxt->disableSAX = 0;
 
-      /* "src/lxml/parser.pxi":530
+      /* "src/lxml/parser.pxi":541
  *     cdef void _resetParserContext(self):
  *         if self._c_ctxt is not NULL:
  *             if self._c_ctxt.html:             # <<<<<<<<<<<<<<
@@ -102858,7 +103037,7 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__resetParserContext(struct __p
       goto __pyx_L4;
     }
 
-    /* "src/lxml/parser.pxi":534
+    /* "src/lxml/parser.pxi":545
  *                 self._c_ctxt.disableSAX = 0 # work around bug in libxml2
  *             else:
  *                 xmlparser.xmlClearParserCtxt(self._c_ctxt)             # <<<<<<<<<<<<<<
@@ -102870,7 +103049,7 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__resetParserContext(struct __p
     }
     __pyx_L4:;
 
-    /* "src/lxml/parser.pxi":529
+    /* "src/lxml/parser.pxi":540
  * 
  *     cdef void _resetParserContext(self):
  *         if self._c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -102879,7 +103058,7 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__resetParserContext(struct __p
  */
   }
 
-  /* "src/lxml/parser.pxi":528
+  /* "src/lxml/parser.pxi":539
  *         c_ctxt._private = <void*>self
  * 
  *     cdef void _resetParserContext(self):             # <<<<<<<<<<<<<<
@@ -102891,7 +103070,7 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__resetParserContext(struct __p
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/parser.pxi":536
+/* "src/lxml/parser.pxi":547
  *                 xmlparser.xmlClearParserCtxt(self._c_ctxt)
  * 
  *     cdef int prepare(self) except -1:             # <<<<<<<<<<<<<<
@@ -102912,7 +103091,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("prepare", 0);
 
-  /* "src/lxml/parser.pxi":538
+  /* "src/lxml/parser.pxi":549
  *     cdef int prepare(self) except -1:
  *         cdef int result
  *         if config.ENABLE_THREADING and self._lock is not NULL:             # <<<<<<<<<<<<<<
@@ -102930,7 +103109,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":539
+    /* "src/lxml/parser.pxi":550
  *         cdef int result
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -102944,7 +103123,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
         #endif
         /*try:*/ {
 
-          /* "src/lxml/parser.pxi":540
+          /* "src/lxml/parser.pxi":551
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             with nogil:
  *                 result = python.PyThread_acquire_lock(             # <<<<<<<<<<<<<<
@@ -102954,7 +103133,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
           __pyx_v_result = PyThread_acquire_lock(__pyx_v_self->_lock, WAIT_LOCK);
         }
 
-        /* "src/lxml/parser.pxi":539
+        /* "src/lxml/parser.pxi":550
  *         cdef int result
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -102972,7 +103151,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
         }
     }
 
-    /* "src/lxml/parser.pxi":542
+    /* "src/lxml/parser.pxi":553
  *                 result = python.PyThread_acquire_lock(
  *                     self._lock, python.WAIT_LOCK)
  *             if result == 0:             # <<<<<<<<<<<<<<
@@ -102982,20 +103161,20 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
     __pyx_t_1 = ((__pyx_v_result == 0) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":543
+      /* "src/lxml/parser.pxi":554
  *                     self._lock, python.WAIT_LOCK)
  *             if result == 0:
  *                 raise ParserError, u"parser locking failed"             # <<<<<<<<<<<<<<
  *         self._error_log.clear()
  *         self._doc = None
  */
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ParserError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ParserError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, __pyx_kp_u_parser_locking_failed, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/parser.pxi":542
+      /* "src/lxml/parser.pxi":553
  *                 result = python.PyThread_acquire_lock(
  *                     self._lock, python.WAIT_LOCK)
  *             if result == 0:             # <<<<<<<<<<<<<<
@@ -103004,7 +103183,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
  */
     }
 
-    /* "src/lxml/parser.pxi":538
+    /* "src/lxml/parser.pxi":549
  *     cdef int prepare(self) except -1:
  *         cdef int result
  *         if config.ENABLE_THREADING and self._lock is not NULL:             # <<<<<<<<<<<<<<
@@ -103013,18 +103192,18 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":544
+  /* "src/lxml/parser.pxi":555
  *             if result == 0:
  *                 raise ParserError, u"parser locking failed"
  *         self._error_log.clear()             # <<<<<<<<<<<<<<
  *         self._doc = None
  *         self._c_ctxt.sax.serror = _receiveParserError
  */
-  __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":545
+  /* "src/lxml/parser.pxi":556
  *                 raise ParserError, u"parser locking failed"
  *         self._error_log.clear()
  *         self._doc = None             # <<<<<<<<<<<<<<
@@ -103037,7 +103216,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_doc));
   __pyx_v_self->_doc = ((struct LxmlDocument *)Py_None);
 
-  /* "src/lxml/parser.pxi":546
+  /* "src/lxml/parser.pxi":557
  *         self._error_log.clear()
  *         self._doc = None
  *         self._c_ctxt.sax.serror = _receiveParserError             # <<<<<<<<<<<<<<
@@ -103046,7 +103225,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
  */
   __pyx_v_self->_c_ctxt->sax->serror = __pyx_f_4lxml_5etree__receiveParserError;
 
-  /* "src/lxml/parser.pxi":547
+  /* "src/lxml/parser.pxi":558
  *         self._doc = None
  *         self._c_ctxt.sax.serror = _receiveParserError
  *         if self._validator is not None:             # <<<<<<<<<<<<<<
@@ -103057,7 +103236,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":548
+    /* "src/lxml/parser.pxi":559
  *         self._c_ctxt.sax.serror = _receiveParserError
  *         if self._validator is not None:
  *             self._validator.connect(self._c_ctxt, self._error_log)             # <<<<<<<<<<<<<<
@@ -103066,10 +103245,10 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
  */
     __pyx_t_3 = ((PyObject *)__pyx_v_self->_error_log);
     __Pyx_INCREF(__pyx_t_3);
-    __pyx_t_4 = __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(__pyx_v_self->_validator, __pyx_v_self->_c_ctxt, ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_3)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(__pyx_v_self->_validator, __pyx_v_self->_c_ctxt, ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_3)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":547
+    /* "src/lxml/parser.pxi":558
  *         self._doc = None
  *         self._c_ctxt.sax.serror = _receiveParserError
  *         if self._validator is not None:             # <<<<<<<<<<<<<<
@@ -103078,7 +103257,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":549
+  /* "src/lxml/parser.pxi":560
  *         if self._validator is not None:
  *             self._validator.connect(self._c_ctxt, self._error_log)
  *         return 0             # <<<<<<<<<<<<<<
@@ -103088,7 +103267,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":536
+  /* "src/lxml/parser.pxi":547
  *                 xmlparser.xmlClearParserCtxt(self._c_ctxt)
  * 
  *     cdef int prepare(self) except -1:             # <<<<<<<<<<<<<<
@@ -103106,7 +103285,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":551
+/* "src/lxml/parser.pxi":562
  *         return 0
  * 
  *     cdef int cleanup(self) except -1:             # <<<<<<<<<<<<<<
@@ -103121,7 +103300,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("cleanup", 0);
 
-  /* "src/lxml/parser.pxi":552
+  /* "src/lxml/parser.pxi":563
  * 
  *     cdef int cleanup(self) except -1:
  *         if self._validator is not None:             # <<<<<<<<<<<<<<
@@ -103132,7 +103311,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":553
+    /* "src/lxml/parser.pxi":564
  *     cdef int cleanup(self) except -1:
  *         if self._validator is not None:
  *             self._validator.disconnect()             # <<<<<<<<<<<<<<
@@ -103141,7 +103320,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
  */
     __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_disconnect(__pyx_v_self->_validator);
 
-    /* "src/lxml/parser.pxi":552
+    /* "src/lxml/parser.pxi":563
  * 
  *     cdef int cleanup(self) except -1:
  *         if self._validator is not None:             # <<<<<<<<<<<<<<
@@ -103150,7 +103329,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":554
+  /* "src/lxml/parser.pxi":565
  *         if self._validator is not None:
  *             self._validator.disconnect()
  *         self._resetParserContext()             # <<<<<<<<<<<<<<
@@ -103159,7 +103338,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
  */
   ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_resetParserContext(__pyx_v_self);
 
-  /* "src/lxml/parser.pxi":555
+  /* "src/lxml/parser.pxi":566
  *             self._validator.disconnect()
  *         self._resetParserContext()
  *         self.clear()             # <<<<<<<<<<<<<<
@@ -103168,7 +103347,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
  */
   ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.clear(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self));
 
-  /* "src/lxml/parser.pxi":556
+  /* "src/lxml/parser.pxi":567
  *         self._resetParserContext()
  *         self.clear()
  *         self._doc = None             # <<<<<<<<<<<<<<
@@ -103181,7 +103360,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_doc));
   __pyx_v_self->_doc = ((struct LxmlDocument *)Py_None);
 
-  /* "src/lxml/parser.pxi":557
+  /* "src/lxml/parser.pxi":568
  *         self.clear()
  *         self._doc = None
  *         self._c_ctxt.sax.serror = NULL             # <<<<<<<<<<<<<<
@@ -103190,7 +103369,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
  */
   __pyx_v_self->_c_ctxt->sax->serror = NULL;
 
-  /* "src/lxml/parser.pxi":558
+  /* "src/lxml/parser.pxi":569
  *         self._doc = None
  *         self._c_ctxt.sax.serror = NULL
  *         if config.ENABLE_THREADING and self._lock is not NULL:             # <<<<<<<<<<<<<<
@@ -103208,7 +103387,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
   __pyx_L5_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":559
+    /* "src/lxml/parser.pxi":570
  *         self._c_ctxt.sax.serror = NULL
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             python.PyThread_release_lock(self._lock)             # <<<<<<<<<<<<<<
@@ -103217,7 +103396,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
  */
     PyThread_release_lock(__pyx_v_self->_lock);
 
-    /* "src/lxml/parser.pxi":558
+    /* "src/lxml/parser.pxi":569
  *         self._doc = None
  *         self._c_ctxt.sax.serror = NULL
  *         if config.ENABLE_THREADING and self._lock is not NULL:             # <<<<<<<<<<<<<<
@@ -103226,7 +103405,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":560
+  /* "src/lxml/parser.pxi":571
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             python.PyThread_release_lock(self._lock)
  *         return 0             # <<<<<<<<<<<<<<
@@ -103236,7 +103415,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":551
+  /* "src/lxml/parser.pxi":562
  *         return 0
  * 
  *     cdef int cleanup(self) except -1:             # <<<<<<<<<<<<<<
@@ -103250,7 +103429,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":562
+/* "src/lxml/parser.pxi":573
  *         return 0
  * 
  *     cdef object _handleParseResult(self, _BaseParser parser,             # <<<<<<<<<<<<<<
@@ -103272,17 +103451,17 @@ static PyObject *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult(struct
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_handleParseResult", 0);
 
-  /* "src/lxml/parser.pxi":564
+  /* "src/lxml/parser.pxi":575
  *     cdef object _handleParseResult(self, _BaseParser parser,
  *                                    xmlDoc* result, filename):
  *         c_doc = self._handleParseResultDoc(parser, result, filename)             # <<<<<<<<<<<<<<
  *         if self._doc is not None and self._doc._c_doc is c_doc:
  *             return self._doc
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_self, __pyx_v_parser, __pyx_v_result, __pyx_v_filename); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_self, __pyx_v_parser, __pyx_v_result, __pyx_v_filename); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_c_doc = __pyx_t_1;
 
-  /* "src/lxml/parser.pxi":565
+  /* "src/lxml/parser.pxi":576
  *                                    xmlDoc* result, filename):
  *         c_doc = self._handleParseResultDoc(parser, result, filename)
  *         if self._doc is not None and self._doc._c_doc is c_doc:             # <<<<<<<<<<<<<<
@@ -103301,7 +103480,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult(struct
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":566
+    /* "src/lxml/parser.pxi":577
  *         c_doc = self._handleParseResultDoc(parser, result, filename)
  *         if self._doc is not None and self._doc._c_doc is c_doc:
  *             return self._doc             # <<<<<<<<<<<<<<
@@ -103313,7 +103492,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult(struct
     __pyx_r = ((PyObject *)__pyx_v_self->_doc);
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":565
+    /* "src/lxml/parser.pxi":576
  *                                    xmlDoc* result, filename):
  *         c_doc = self._handleParseResultDoc(parser, result, filename)
  *         if self._doc is not None and self._doc._c_doc is c_doc:             # <<<<<<<<<<<<<<
@@ -103322,7 +103501,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult(struct
  */
   }
 
-  /* "src/lxml/parser.pxi":568
+  /* "src/lxml/parser.pxi":579
  *             return self._doc
  *         else:
  *             return _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
@@ -103331,14 +103510,14 @@ static PyObject *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult(struct
  */
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_r = __pyx_t_5;
     __pyx_t_5 = 0;
     goto __pyx_L0;
   }
 
-  /* "src/lxml/parser.pxi":562
+  /* "src/lxml/parser.pxi":573
  *         return 0
  * 
  *     cdef object _handleParseResult(self, _BaseParser parser,             # <<<<<<<<<<<<<<
@@ -103357,7 +103536,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult(struct
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":570
+/* "src/lxml/parser.pxi":581
  *             return _documentFactory(c_doc, parser)
  * 
  *     cdef xmlDoc* _handleParseResultDoc(self, _BaseParser parser,             # <<<<<<<<<<<<<<
@@ -103376,7 +103555,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResultDoc(struc
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_handleParseResultDoc", 0);
 
-  /* "src/lxml/parser.pxi":572
+  /* "src/lxml/parser.pxi":583
  *     cdef xmlDoc* _handleParseResultDoc(self, _BaseParser parser,
  *                                        xmlDoc* result, filename) except NULL:
  *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER             # <<<<<<<<<<<<<<
@@ -103385,7 +103564,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResultDoc(struc
  */
   __pyx_v_recover = (__pyx_v_parser->_parse_options & XML_PARSE_RECOVER);
 
-  /* "src/lxml/parser.pxi":575
+  /* "src/lxml/parser.pxi":586
  *         return _handleParseResult(self, self._c_ctxt, result,
  *                                   filename, recover,
  *                                   free_doc=self._doc is None)             # <<<<<<<<<<<<<<
@@ -103394,18 +103573,18 @@ static xmlDoc *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResultDoc(struc
  */
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_doc) == Py_None);
 
-  /* "src/lxml/parser.pxi":573
+  /* "src/lxml/parser.pxi":584
  *                                        xmlDoc* result, filename) except NULL:
  *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER
  *         return _handleParseResult(self, self._c_ctxt, result,             # <<<<<<<<<<<<<<
  *                                   filename, recover,
  *                                   free_doc=self._doc is None)
  */
-  __pyx_t_2 = __pyx_f_4lxml_5etree__handleParseResult(__pyx_v_self, __pyx_v_self->_c_ctxt, __pyx_v_result, __pyx_v_filename, __pyx_v_recover, __pyx_t_1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __pyx_f_4lxml_5etree__handleParseResult(__pyx_v_self, __pyx_v_self->_c_ctxt, __pyx_v_result, __pyx_v_filename, __pyx_v_recover, __pyx_t_1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_t_2;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":570
+  /* "src/lxml/parser.pxi":581
  *             return _documentFactory(c_doc, parser)
  * 
  *     cdef xmlDoc* _handleParseResultDoc(self, _BaseParser parser,             # <<<<<<<<<<<<<<
@@ -103422,7 +103601,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResultDoc(struc
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":577
+/* "src/lxml/parser.pxi":588
  *                                   free_doc=self._doc is None)
  * 
  * cdef _initParserContext(_ParserContext context,             # <<<<<<<<<<<<<<
@@ -103440,18 +103619,18 @@ static PyObject *__pyx_f_4lxml_5etree__initParserContext(struct __pyx_obj_4lxml_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_initParserContext", 0);
 
-  /* "src/lxml/parser.pxi":580
+  /* "src/lxml/parser.pxi":591
  *                         _ResolverRegistry resolvers,
  *                         xmlparser.xmlParserCtxt* c_ctxt):
  *     _initResolverContext(context, resolvers)             # <<<<<<<<<<<<<<
  *     if c_ctxt is not NULL:
  *         context._initParserContext(c_ctxt)
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__initResolverContext(((struct __pyx_obj_4lxml_5etree__ResolverContext *)__pyx_v_context), __pyx_v_resolvers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree__initResolverContext(((struct __pyx_obj_4lxml_5etree__ResolverContext *)__pyx_v_context), __pyx_v_resolvers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":581
+  /* "src/lxml/parser.pxi":592
  *                         xmlparser.xmlParserCtxt* c_ctxt):
  *     _initResolverContext(context, resolvers)
  *     if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -103461,7 +103640,7 @@ static PyObject *__pyx_f_4lxml_5etree__initParserContext(struct __pyx_obj_4lxml_
   __pyx_t_2 = ((__pyx_v_c_ctxt != NULL) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":582
+    /* "src/lxml/parser.pxi":593
  *     _initResolverContext(context, resolvers)
  *     if c_ctxt is not NULL:
  *         context._initParserContext(c_ctxt)             # <<<<<<<<<<<<<<
@@ -103470,7 +103649,7 @@ static PyObject *__pyx_f_4lxml_5etree__initParserContext(struct __pyx_obj_4lxml_
  */
     ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_initParserContext(__pyx_v_context, __pyx_v_c_ctxt);
 
-    /* "src/lxml/parser.pxi":581
+    /* "src/lxml/parser.pxi":592
  *                         xmlparser.xmlParserCtxt* c_ctxt):
  *     _initResolverContext(context, resolvers)
  *     if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -103479,7 +103658,7 @@ static PyObject *__pyx_f_4lxml_5etree__initParserContext(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":577
+  /* "src/lxml/parser.pxi":588
  *                                   free_doc=self._doc is None)
  * 
  * cdef _initParserContext(_ParserContext context,             # <<<<<<<<<<<<<<
@@ -103500,7 +103679,7 @@ static PyObject *__pyx_f_4lxml_5etree__initParserContext(struct __pyx_obj_4lxml_
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":584
+/* "src/lxml/parser.pxi":595
  *         context._initParserContext(c_ctxt)
  * 
  * cdef void _forwardParserError(xmlparser.xmlParserCtxt* _parser_context, xmlerror.xmlError* error) with gil:             # <<<<<<<<<<<<<<
@@ -103515,7 +103694,7 @@ static void __pyx_f_4lxml_5etree__forwardParserError(xmlParserCtxt *__pyx_v__par
   #endif
   __Pyx_RefNannySetupContext("_forwardParserError", 0);
 
-  /* "src/lxml/parser.pxi":585
+  /* "src/lxml/parser.pxi":596
  * 
  * cdef void _forwardParserError(xmlparser.xmlParserCtxt* _parser_context, xmlerror.xmlError* error) with gil:
  *     (<_ParserContext>_parser_context._private)._error_log._receive(error)             # <<<<<<<<<<<<<<
@@ -103524,7 +103703,7 @@ static void __pyx_f_4lxml_5etree__forwardParserError(xmlParserCtxt *__pyx_v__par
  */
   __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v__parser_context->_private)->_error_log), __pyx_v_error);
 
-  /* "src/lxml/parser.pxi":584
+  /* "src/lxml/parser.pxi":595
  *         context._initParserContext(c_ctxt)
  * 
  * cdef void _forwardParserError(xmlparser.xmlParserCtxt* _parser_context, xmlerror.xmlError* error) with gil:             # <<<<<<<<<<<<<<
@@ -103539,7 +103718,7 @@ static void __pyx_f_4lxml_5etree__forwardParserError(xmlParserCtxt *__pyx_v__par
   #endif
 }
 
-/* "src/lxml/parser.pxi":587
+/* "src/lxml/parser.pxi":598
  *     (<_ParserContext>_parser_context._private)._error_log._receive(error)
  * 
  * cdef void _receiveParserError(void* c_context, xmlerror.xmlError* error) nogil:             # <<<<<<<<<<<<<<
@@ -103551,7 +103730,7 @@ static void __pyx_f_4lxml_5etree__receiveParserError(void *__pyx_v_c_context, xm
   int __pyx_t_1;
   int __pyx_t_2;
 
-  /* "src/lxml/parser.pxi":589
+  /* "src/lxml/parser.pxi":600
  * cdef void _receiveParserError(void* c_context, xmlerror.xmlError* error) nogil:
  *     if __DEBUG:
  *         if c_context is NULL or (<xmlparser.xmlParserCtxt*>c_context)._private is NULL:             # <<<<<<<<<<<<<<
@@ -103569,7 +103748,7 @@ static void __pyx_f_4lxml_5etree__receiveParserError(void *__pyx_v_c_context, xm
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":590
+    /* "src/lxml/parser.pxi":601
  *     if __DEBUG:
  *         if c_context is NULL or (<xmlparser.xmlParserCtxt*>c_context)._private is NULL:
  *             _forwardError(NULL, error)             # <<<<<<<<<<<<<<
@@ -103578,7 +103757,7 @@ static void __pyx_f_4lxml_5etree__receiveParserError(void *__pyx_v_c_context, xm
  */
     __pyx_f_4lxml_5etree__forwardError(NULL, __pyx_v_error);
 
-    /* "src/lxml/parser.pxi":589
+    /* "src/lxml/parser.pxi":600
  * cdef void _receiveParserError(void* c_context, xmlerror.xmlError* error) nogil:
  *     if __DEBUG:
  *         if c_context is NULL or (<xmlparser.xmlParserCtxt*>c_context)._private is NULL:             # <<<<<<<<<<<<<<
@@ -103588,7 +103767,7 @@ static void __pyx_f_4lxml_5etree__receiveParserError(void *__pyx_v_c_context, xm
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":592
+  /* "src/lxml/parser.pxi":603
  *             _forwardError(NULL, error)
  *         else:
  *             _forwardParserError(<xmlparser.xmlParserCtxt*>c_context, error)             # <<<<<<<<<<<<<<
@@ -103600,7 +103779,7 @@ static void __pyx_f_4lxml_5etree__receiveParserError(void *__pyx_v_c_context, xm
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":587
+  /* "src/lxml/parser.pxi":598
  *     (<_ParserContext>_parser_context._private)._error_log._receive(error)
  * 
  * cdef void _receiveParserError(void* c_context, xmlerror.xmlError* error) nogil:             # <<<<<<<<<<<<<<
@@ -103611,7 +103790,7 @@ static void __pyx_f_4lxml_5etree__receiveParserError(void *__pyx_v_c_context, xm
   /* function exit code */
 }
 
-/* "src/lxml/parser.pxi":594
+/* "src/lxml/parser.pxi":605
  *             _forwardParserError(<xmlparser.xmlParserCtxt*>c_context, error)
  * 
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,             # <<<<<<<<<<<<<<
@@ -103649,7 +103828,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
   __Pyx_RefNannySetupContext("_raiseParseError", 0);
   __Pyx_INCREF(__pyx_v_filename);
 
-  /* "src/lxml/parser.pxi":596
+  /* "src/lxml/parser.pxi":607
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,
  *                           _ErrorLog error_log) except 0:
  *     if filename is not None and \             # <<<<<<<<<<<<<<
@@ -103664,7 +103843,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     goto __pyx_L4_bool_binop_done;
   }
 
-  /* "src/lxml/parser.pxi":597
+  /* "src/lxml/parser.pxi":608
  *                           _ErrorLog error_log) except 0:
  *     if filename is not None and \
  *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:             # <<<<<<<<<<<<<<
@@ -103675,7 +103854,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
   __pyx_t_1 = __pyx_t_3;
   __pyx_L4_bool_binop_done:;
 
-  /* "src/lxml/parser.pxi":596
+  /* "src/lxml/parser.pxi":607
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,
  *                           _ErrorLog error_log) except 0:
  *     if filename is not None and \             # <<<<<<<<<<<<<<
@@ -103684,7 +103863,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  */
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":598
+    /* "src/lxml/parser.pxi":609
  *     if filename is not None and \
  *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:
  *         if isinstance(filename, bytes):             # <<<<<<<<<<<<<<
@@ -103695,33 +103874,33 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     __pyx_t_3 = (__pyx_t_1 != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/parser.pxi":600
+      /* "src/lxml/parser.pxi":611
  *         if isinstance(filename, bytes):
  *             filename = _decodeFilenameWithLength(
  *                 <bytes>filename, len(<bytes>filename))             # <<<<<<<<<<<<<<
  *         if ctxt.lastError.message is not NULL:
  *             try:
  */
-      __pyx_t_4 = __Pyx_PyObject_AsUString(__pyx_v_filename); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_AsUString(__pyx_v_filename); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (unlikely(__pyx_v_filename == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-        {__pyx_filename = __pyx_f[6]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[6]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_t_5 = PyBytes_GET_SIZE(((PyObject*)__pyx_v_filename)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyBytes_GET_SIZE(((PyObject*)__pyx_v_filename)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/parser.pxi":599
+      /* "src/lxml/parser.pxi":610
  *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:
  *         if isinstance(filename, bytes):
  *             filename = _decodeFilenameWithLength(             # <<<<<<<<<<<<<<
  *                 <bytes>filename, len(<bytes>filename))
  *         if ctxt.lastError.message is not NULL:
  */
-      __pyx_t_6 = __pyx_f_4lxml_5etree__decodeFilenameWithLength(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __pyx_f_4lxml_5etree__decodeFilenameWithLength(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_6);
       __pyx_t_6 = 0;
 
-      /* "src/lxml/parser.pxi":598
+      /* "src/lxml/parser.pxi":609
  *     if filename is not None and \
  *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:
  *         if isinstance(filename, bytes):             # <<<<<<<<<<<<<<
@@ -103730,7 +103909,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  */
     }
 
-    /* "src/lxml/parser.pxi":601
+    /* "src/lxml/parser.pxi":612
  *             filename = _decodeFilenameWithLength(
  *                 <bytes>filename, len(<bytes>filename))
  *         if ctxt.lastError.message is not NULL:             # <<<<<<<<<<<<<<
@@ -103740,7 +103919,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     __pyx_t_3 = ((__pyx_v_ctxt->lastError.message != NULL) != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/parser.pxi":602
+      /* "src/lxml/parser.pxi":613
  *                 <bytes>filename, len(<bytes>filename))
  *         if ctxt.lastError.message is not NULL:
  *             try:             # <<<<<<<<<<<<<<
@@ -103754,7 +103933,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
         __Pyx_XGOTREF(__pyx_t_9);
         /*try:*/ {
 
-          /* "src/lxml/parser.pxi":603
+          /* "src/lxml/parser.pxi":614
  *         if ctxt.lastError.message is not NULL:
  *             try:
  *                 message = (ctxt.lastError.message).decode('utf-8')             # <<<<<<<<<<<<<<
@@ -103762,13 +103941,13 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  *                 # the filename may be in there => play it safe
  */
           __pyx_t_10 = __pyx_v_ctxt->lastError.message;
-          __pyx_t_6 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+          __pyx_t_6 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_INCREF(__pyx_t_6);
           __pyx_v_message = __pyx_t_6;
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-          /* "src/lxml/parser.pxi":602
+          /* "src/lxml/parser.pxi":613
  *                 <bytes>filename, len(<bytes>filename))
  *         if ctxt.lastError.message is not NULL:
  *             try:             # <<<<<<<<<<<<<<
@@ -103783,7 +103962,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
         __pyx_L8_error:;
         __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-        /* "src/lxml/parser.pxi":604
+        /* "src/lxml/parser.pxi":615
  *             try:
  *                 message = (ctxt.lastError.message).decode('utf-8')
  *             except UnicodeDecodeError:             # <<<<<<<<<<<<<<
@@ -103793,12 +103972,12 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
         __pyx_t_11 = PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
         if (__pyx_t_11) {
           __Pyx_AddTraceback("lxml.etree._raiseParseError", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_12, &__pyx_t_13) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
+          if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_12, &__pyx_t_13) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_GOTREF(__pyx_t_13);
 
-          /* "src/lxml/parser.pxi":606
+          /* "src/lxml/parser.pxi":617
  *             except UnicodeDecodeError:
  *                 # the filename may be in there => play it safe
  *                 message = (ctxt.lastError.message).decode('iso8859-1')             # <<<<<<<<<<<<<<
@@ -103806,7 +103985,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  *                 filename, message.strip())
  */
           __pyx_t_10 = __pyx_v_ctxt->lastError.message;
-          __pyx_t_14 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeLatin1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
+          __pyx_t_14 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeLatin1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
           __Pyx_GOTREF(__pyx_t_14);
           __Pyx_INCREF(__pyx_t_14);
           __Pyx_XDECREF_SET(__pyx_v_message, __pyx_t_14);
@@ -103819,7 +103998,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
         goto __pyx_L10_except_error;
         __pyx_L10_except_error:;
 
-        /* "src/lxml/parser.pxi":602
+        /* "src/lxml/parser.pxi":613
  *                 <bytes>filename, len(<bytes>filename))
  *         if ctxt.lastError.message is not NULL:
  *             try:             # <<<<<<<<<<<<<<
@@ -103839,14 +104018,14 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
         __pyx_L15_try_end:;
       }
 
-      /* "src/lxml/parser.pxi":608
+      /* "src/lxml/parser.pxi":619
  *                 message = (ctxt.lastError.message).decode('iso8859-1')
  *             message = u"Error reading file '%s': %s" % (
  *                 filename, message.strip())             # <<<<<<<<<<<<<<
  *         else:
  *             message = u"Error reading '%s'" % filename
  */
-      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_message, __pyx_n_s_strip); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_message, __pyx_n_s_strip); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_12);
       __pyx_t_6 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_12))) {
@@ -103859,14 +104038,14 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
         }
       }
       if (__pyx_t_6) {
-        __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_6); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_6); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       } else {
-        __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_13);
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_INCREF(__pyx_v_filename);
       __Pyx_GIVEREF(__pyx_v_filename);
@@ -103875,20 +104054,20 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
       PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_13);
       __pyx_t_13 = 0;
 
-      /* "src/lxml/parser.pxi":607
+      /* "src/lxml/parser.pxi":618
  *                 # the filename may be in there => play it safe
  *                 message = (ctxt.lastError.message).decode('iso8859-1')
  *             message = u"Error reading file '%s': %s" % (             # <<<<<<<<<<<<<<
  *                 filename, message.strip())
  *         else:
  */
-      __pyx_t_13 = PyUnicode_Format(__pyx_kp_u_Error_reading_file_s_s, __pyx_t_12); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = PyUnicode_Format(__pyx_kp_u_Error_reading_file_s_s, __pyx_t_12); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_13);
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_13);
       __pyx_t_13 = 0;
 
-      /* "src/lxml/parser.pxi":601
+      /* "src/lxml/parser.pxi":612
  *             filename = _decodeFilenameWithLength(
  *                 <bytes>filename, len(<bytes>filename))
  *         if ctxt.lastError.message is not NULL:             # <<<<<<<<<<<<<<
@@ -103898,7 +104077,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
       goto __pyx_L7;
     }
 
-    /* "src/lxml/parser.pxi":610
+    /* "src/lxml/parser.pxi":621
  *                 filename, message.strip())
  *         else:
  *             message = u"Error reading '%s'" % filename             # <<<<<<<<<<<<<<
@@ -103906,14 +104085,14 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  *     elif error_log:
  */
     /*else*/ {
-      __pyx_t_13 = PyUnicode_Format(__pyx_kp_u_Error_reading_s, __pyx_v_filename); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = PyUnicode_Format(__pyx_kp_u_Error_reading_s, __pyx_v_filename); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_13);
       __pyx_v_message = __pyx_t_13;
       __pyx_t_13 = 0;
     }
     __pyx_L7:;
 
-    /* "src/lxml/parser.pxi":611
+    /* "src/lxml/parser.pxi":622
  *         else:
  *             message = u"Error reading '%s'" % filename
  *         raise IOError, message             # <<<<<<<<<<<<<<
@@ -103921,9 +104100,9 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  *         raise error_log._buildParseException(
  */
     __Pyx_Raise(__pyx_builtin_IOError, __pyx_v_message, 0, 0);
-    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":596
+    /* "src/lxml/parser.pxi":607
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,
  *                           _ErrorLog error_log) except 0:
  *     if filename is not None and \             # <<<<<<<<<<<<<<
@@ -103932,41 +104111,41 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  */
   }
 
-  /* "src/lxml/parser.pxi":612
+  /* "src/lxml/parser.pxi":623
  *             message = u"Error reading '%s'" % filename
  *         raise IOError, message
  *     elif error_log:             # <<<<<<<<<<<<<<
  *         raise error_log._buildParseException(
  *             XMLSyntaxError, u"Document is not well formed")
  */
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_error_log)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_error_log)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_3) {
 
-    /* "src/lxml/parser.pxi":614
+    /* "src/lxml/parser.pxi":625
  *     elif error_log:
  *         raise error_log._buildParseException(
  *             XMLSyntaxError, u"Document is not well formed")             # <<<<<<<<<<<<<<
  *     elif ctxt.lastError.message is not NULL:
  *         message = (ctxt.lastError.message).strip()
  */
-    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 625; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_13);
 
-    /* "src/lxml/parser.pxi":613
+    /* "src/lxml/parser.pxi":624
  *         raise IOError, message
  *     elif error_log:
  *         raise error_log._buildParseException(             # <<<<<<<<<<<<<<
  *             XMLSyntaxError, u"Document is not well formed")
  *     elif ctxt.lastError.message is not NULL:
  */
-    __pyx_t_12 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_error_log), __pyx_t_13, __pyx_kp_u_Document_is_not_well_formed); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_error_log), __pyx_t_13, __pyx_kp_u_Document_is_not_well_formed); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_12);
     __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
     __Pyx_Raise(__pyx_t_12, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":612
+    /* "src/lxml/parser.pxi":623
  *             message = u"Error reading '%s'" % filename
  *         raise IOError, message
  *     elif error_log:             # <<<<<<<<<<<<<<
@@ -103975,7 +104154,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  */
   }
 
-  /* "src/lxml/parser.pxi":615
+  /* "src/lxml/parser.pxi":626
  *         raise error_log._buildParseException(
  *             XMLSyntaxError, u"Document is not well formed")
  *     elif ctxt.lastError.message is not NULL:             # <<<<<<<<<<<<<<
@@ -103985,16 +104164,16 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
   __pyx_t_3 = ((__pyx_v_ctxt->lastError.message != NULL) != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/parser.pxi":616
+    /* "src/lxml/parser.pxi":627
  *             XMLSyntaxError, u"Document is not well formed")
  *     elif ctxt.lastError.message is not NULL:
  *         message = (ctxt.lastError.message).strip()             # <<<<<<<<<<<<<<
  *         code = ctxt.lastError.code
  *         line = ctxt.lastError.line
  */
-    __pyx_t_13 = __Pyx_PyBytes_FromString(__pyx_v_ctxt->lastError.message); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_13 = __Pyx_PyBytes_FromString(__pyx_v_ctxt->lastError.message); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_13);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_strip); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_strip); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
     __pyx_t_13 = NULL;
@@ -104008,17 +104187,17 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
       }
     }
     if (__pyx_t_13) {
-      __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
     } else {
-      __pyx_t_12 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_12);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_v_message = __pyx_t_12;
     __pyx_t_12 = 0;
 
-    /* "src/lxml/parser.pxi":617
+    /* "src/lxml/parser.pxi":628
  *     elif ctxt.lastError.message is not NULL:
  *         message = (ctxt.lastError.message).strip()
  *         code = ctxt.lastError.code             # <<<<<<<<<<<<<<
@@ -104028,7 +104207,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     __pyx_t_11 = __pyx_v_ctxt->lastError.code;
     __pyx_v_code = __pyx_t_11;
 
-    /* "src/lxml/parser.pxi":618
+    /* "src/lxml/parser.pxi":629
  *         message = (ctxt.lastError.message).strip()
  *         code = ctxt.lastError.code
  *         line = ctxt.lastError.line             # <<<<<<<<<<<<<<
@@ -104038,7 +104217,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     __pyx_t_11 = __pyx_v_ctxt->lastError.line;
     __pyx_v_line = __pyx_t_11;
 
-    /* "src/lxml/parser.pxi":619
+    /* "src/lxml/parser.pxi":630
  *         code = ctxt.lastError.code
  *         line = ctxt.lastError.line
  *         column = ctxt.lastError.int2             # <<<<<<<<<<<<<<
@@ -104048,7 +104227,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     __pyx_t_11 = __pyx_v_ctxt->lastError.int2;
     __pyx_v_column = __pyx_t_11;
 
-    /* "src/lxml/parser.pxi":620
+    /* "src/lxml/parser.pxi":631
  *         line = ctxt.lastError.line
  *         column = ctxt.lastError.int2
  *         if ctxt.lastError.line > 0:             # <<<<<<<<<<<<<<
@@ -104058,16 +104237,16 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     __pyx_t_3 = ((__pyx_v_ctxt->lastError.line > 0) != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/parser.pxi":621
+      /* "src/lxml/parser.pxi":632
  *         column = ctxt.lastError.int2
  *         if ctxt.lastError.line > 0:
  *             message = u"line %d: %s" % (line, message)             # <<<<<<<<<<<<<<
  *         raise XMLSyntaxError(message, code, line, column)
  *     else:
  */
-      __pyx_t_12 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_12);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_12);
@@ -104075,13 +104254,13 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
       __Pyx_GIVEREF(__pyx_v_message);
       PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_message);
       __pyx_t_12 = 0;
-      __pyx_t_12 = PyUnicode_Format(__pyx_kp_u_line_d_s, __pyx_t_6); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyUnicode_Format(__pyx_kp_u_line_d_s, __pyx_t_6); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_12);
       __pyx_t_12 = 0;
 
-      /* "src/lxml/parser.pxi":620
+      /* "src/lxml/parser.pxi":631
  *         line = ctxt.lastError.line
  *         column = ctxt.lastError.int2
  *         if ctxt.lastError.line > 0:             # <<<<<<<<<<<<<<
@@ -104090,20 +104269,20 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  */
     }
 
-    /* "src/lxml/parser.pxi":622
+    /* "src/lxml/parser.pxi":633
  *         if ctxt.lastError.line > 0:
  *             message = u"line %d: %s" % (line, message)
  *         raise XMLSyntaxError(message, code, line, column)             # <<<<<<<<<<<<<<
  *     else:
  *         raise XMLSyntaxError(None, xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0)
  */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_13 = __Pyx_PyInt_From_int(__pyx_v_code); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_13 = __Pyx_PyInt_From_int(__pyx_v_code); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_13);
-    __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_14);
-    __pyx_t_15 = __Pyx_PyInt_From_int(__pyx_v_column); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_15 = __Pyx_PyInt_From_int(__pyx_v_column); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_15);
     __pyx_t_16 = NULL;
     __pyx_t_5 = 0;
@@ -104117,7 +104296,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
         __pyx_t_5 = 1;
       }
     }
-    __pyx_t_17 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_17 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_17);
     if (__pyx_t_16) {
       __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_16); __pyx_t_16 = NULL;
@@ -104134,15 +104313,15 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     __pyx_t_13 = 0;
     __pyx_t_14 = 0;
     __pyx_t_15 = 0;
-    __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_17, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_17, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_12);
     __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_Raise(__pyx_t_12, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":615
+    /* "src/lxml/parser.pxi":626
  *         raise error_log._buildParseException(
  *             XMLSyntaxError, u"Document is not well formed")
  *     elif ctxt.lastError.message is not NULL:             # <<<<<<<<<<<<<<
@@ -104151,7 +104330,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  */
   }
 
-  /* "src/lxml/parser.pxi":624
+  /* "src/lxml/parser.pxi":635
  *         raise XMLSyntaxError(message, code, line, column)
  *     else:
  *         raise XMLSyntaxError(None, xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0)             # <<<<<<<<<<<<<<
@@ -104159,9 +104338,9 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  * cdef xmlDoc* _handleParseResult(_ParserContext context,
  */
   /*else*/ {
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_17 = __Pyx_PyInt_From_xmlParserErrors(XML_ERR_INTERNAL_ERROR); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_17 = __Pyx_PyInt_From_xmlParserErrors(XML_ERR_INTERNAL_ERROR); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_17);
     __pyx_t_15 = NULL;
     __pyx_t_5 = 0;
@@ -104175,7 +104354,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
         __pyx_t_5 = 1;
       }
     }
-    __pyx_t_14 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_14 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_14);
     if (__pyx_t_15) {
       __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_15); __pyx_t_15 = NULL;
@@ -104192,16 +104371,16 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     __Pyx_GIVEREF(__pyx_int_0);
     PyTuple_SET_ITEM(__pyx_t_14, 3+__pyx_t_5, __pyx_int_0);
     __pyx_t_17 = 0;
-    __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_14, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_14, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_12);
     __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_Raise(__pyx_t_12, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "src/lxml/parser.pxi":594
+  /* "src/lxml/parser.pxi":605
  *             _forwardParserError(<xmlparser.xmlParserCtxt*>c_context, error)
  * 
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,             # <<<<<<<<<<<<<<
@@ -104226,7 +104405,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":626
+/* "src/lxml/parser.pxi":637
  *         raise XMLSyntaxError(None, xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0)
  * 
  * cdef xmlDoc* _handleParseResult(_ParserContext context,             # <<<<<<<<<<<<<<
@@ -104255,7 +104434,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_handleParseResult", 0);
 
-  /* "src/lxml/parser.pxi":631
+  /* "src/lxml/parser.pxi":642
  *                                 bint recover, bint free_doc) except NULL:
  *     cdef bint well_formed
  *     if result is not NULL:             # <<<<<<<<<<<<<<
@@ -104265,7 +104444,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
   __pyx_t_1 = ((__pyx_v_result != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":632
+    /* "src/lxml/parser.pxi":643
  *     cdef bint well_formed
  *     if result is not NULL:
  *         __GLOBAL_PARSER_CONTEXT.initDocDict(result)             # <<<<<<<<<<<<<<
@@ -104274,7 +104453,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_result);
 
-    /* "src/lxml/parser.pxi":631
+    /* "src/lxml/parser.pxi":642
  *                                 bint recover, bint free_doc) except NULL:
  *     cdef bint well_formed
  *     if result is not NULL:             # <<<<<<<<<<<<<<
@@ -104283,7 +104462,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":634
+  /* "src/lxml/parser.pxi":645
  *         __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  * 
  *     if c_ctxt.myDoc is not NULL:             # <<<<<<<<<<<<<<
@@ -104293,7 +104472,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
   __pyx_t_1 = ((__pyx_v_c_ctxt->myDoc != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":635
+    /* "src/lxml/parser.pxi":646
  * 
  *     if c_ctxt.myDoc is not NULL:
  *         if c_ctxt.myDoc is not result:             # <<<<<<<<<<<<<<
@@ -104303,7 +104482,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     __pyx_t_1 = ((__pyx_v_c_ctxt->myDoc != __pyx_v_result) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":636
+      /* "src/lxml/parser.pxi":647
  *     if c_ctxt.myDoc is not NULL:
  *         if c_ctxt.myDoc is not result:
  *             __GLOBAL_PARSER_CONTEXT.initDocDict(c_ctxt.myDoc)             # <<<<<<<<<<<<<<
@@ -104312,7 +104491,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
       __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_c_ctxt->myDoc);
 
-      /* "src/lxml/parser.pxi":637
+      /* "src/lxml/parser.pxi":648
  *         if c_ctxt.myDoc is not result:
  *             __GLOBAL_PARSER_CONTEXT.initDocDict(c_ctxt.myDoc)
  *             tree.xmlFreeDoc(c_ctxt.myDoc)             # <<<<<<<<<<<<<<
@@ -104321,7 +104500,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
       xmlFreeDoc(__pyx_v_c_ctxt->myDoc);
 
-      /* "src/lxml/parser.pxi":635
+      /* "src/lxml/parser.pxi":646
  * 
  *     if c_ctxt.myDoc is not NULL:
  *         if c_ctxt.myDoc is not result:             # <<<<<<<<<<<<<<
@@ -104330,7 +104509,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
     }
 
-    /* "src/lxml/parser.pxi":638
+    /* "src/lxml/parser.pxi":649
  *             __GLOBAL_PARSER_CONTEXT.initDocDict(c_ctxt.myDoc)
  *             tree.xmlFreeDoc(c_ctxt.myDoc)
  *         c_ctxt.myDoc = NULL             # <<<<<<<<<<<<<<
@@ -104339,7 +104518,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
     __pyx_v_c_ctxt->myDoc = NULL;
 
-    /* "src/lxml/parser.pxi":634
+    /* "src/lxml/parser.pxi":645
  *         __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  * 
  *     if c_ctxt.myDoc is not NULL:             # <<<<<<<<<<<<<<
@@ -104348,7 +104527,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":640
+  /* "src/lxml/parser.pxi":651
  *         c_ctxt.myDoc = NULL
  * 
  *     if result is not NULL:             # <<<<<<<<<<<<<<
@@ -104358,7 +104537,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
   __pyx_t_1 = ((__pyx_v_result != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":641
+    /* "src/lxml/parser.pxi":652
  * 
  *     if result is not NULL:
  *         if (context._validator is not None and             # <<<<<<<<<<<<<<
@@ -104373,7 +104552,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L8_bool_binop_done;
     }
 
-    /* "src/lxml/parser.pxi":642
+    /* "src/lxml/parser.pxi":653
  *     if result is not NULL:
  *         if (context._validator is not None and
  *                 not context._validator.isvalid()):             # <<<<<<<<<<<<<<
@@ -104384,7 +104563,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     __pyx_t_1 = __pyx_t_3;
     __pyx_L8_bool_binop_done:;
 
-    /* "src/lxml/parser.pxi":641
+    /* "src/lxml/parser.pxi":652
  * 
  *     if result is not NULL:
  *         if (context._validator is not None and             # <<<<<<<<<<<<<<
@@ -104393,7 +104572,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":643
+      /* "src/lxml/parser.pxi":654
  *         if (context._validator is not None and
  *                 not context._validator.isvalid()):
  *             well_formed = 0  # actually not 'valid', but anyway ...             # <<<<<<<<<<<<<<
@@ -104402,7 +104581,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
       __pyx_v_well_formed = 0;
 
-      /* "src/lxml/parser.pxi":641
+      /* "src/lxml/parser.pxi":652
  * 
  *     if result is not NULL:
  *         if (context._validator is not None and             # <<<<<<<<<<<<<<
@@ -104412,7 +104591,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L7;
     }
 
-    /* "src/lxml/parser.pxi":644
+    /* "src/lxml/parser.pxi":655
  *                 not context._validator.isvalid()):
  *             well_formed = 0  # actually not 'valid', but anyway ...
  *         elif (not c_ctxt.wellFormed and not c_ctxt.html and             # <<<<<<<<<<<<<<
@@ -104432,7 +104611,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L10_bool_binop_done;
     }
 
-    /* "src/lxml/parser.pxi":645
+    /* "src/lxml/parser.pxi":656
  *             well_formed = 0  # actually not 'valid', but anyway ...
  *         elif (not c_ctxt.wellFormed and not c_ctxt.html and
  *                 c_ctxt.charset == tree.XML_CHAR_ENCODING_8859_1 and             # <<<<<<<<<<<<<<
@@ -104446,39 +104625,39 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L10_bool_binop_done;
     }
 
-    /* "src/lxml/parser.pxi":646
+    /* "src/lxml/parser.pxi":657
  *         elif (not c_ctxt.wellFormed and not c_ctxt.html and
  *                 c_ctxt.charset == tree.XML_CHAR_ENCODING_8859_1 and
  *                 [1 for error in context._error_log             # <<<<<<<<<<<<<<
  *                  if error.type == ErrorTypes.ERR_INVALID_CHAR]):
  *             # An encoding error occurred and libxml2 switched from UTF-8
  */
-    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     if (likely(PyList_CheckExact(((PyObject *)__pyx_v_context->_error_log))) || PyTuple_CheckExact(((PyObject *)__pyx_v_context->_error_log))) {
       __pyx_t_5 = ((PyObject *)__pyx_v_context->_error_log); __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
       __pyx_t_7 = NULL;
     } else {
-      __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(((PyObject *)__pyx_v_context->_error_log)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(((PyObject *)__pyx_v_context->_error_log)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     for (;;) {
       if (likely(!__pyx_t_7)) {
         if (likely(PyList_CheckExact(__pyx_t_5))) {
           if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_8 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
           #endif
         } else {
           if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
           #endif
         }
@@ -104488,7 +104667,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[6]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[6]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -104497,30 +104676,30 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       __Pyx_XDECREF_SET(__pyx_v_error, __pyx_t_8);
       __pyx_t_8 = 0;
 
-      /* "src/lxml/parser.pxi":647
+      /* "src/lxml/parser.pxi":658
  *                 c_ctxt.charset == tree.XML_CHAR_ENCODING_8859_1 and
  *                 [1 for error in context._error_log
  *                  if error.type == ErrorTypes.ERR_INVALID_CHAR]):             # <<<<<<<<<<<<<<
  *             # An encoding error occurred and libxml2 switched from UTF-8
  *             # input to (undecoded) Latin-1, at some arbitrary point in the
  */
-      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_n_s_type); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_n_s_type); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_ERR_INVALID_CHAR); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_ERR_INVALID_CHAR); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       if (__pyx_t_3) {
-        if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_int_1))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_int_1))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "src/lxml/parser.pxi":646
+      /* "src/lxml/parser.pxi":657
  *         elif (not c_ctxt.wellFormed and not c_ctxt.html and
  *                 c_ctxt.charset == tree.XML_CHAR_ENCODING_8859_1 and
  *                 [1 for error in context._error_log             # <<<<<<<<<<<<<<
@@ -104534,7 +104713,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     __pyx_t_1 = __pyx_t_3;
     __pyx_L10_bool_binop_done:;
 
-    /* "src/lxml/parser.pxi":644
+    /* "src/lxml/parser.pxi":655
  *                 not context._validator.isvalid()):
  *             well_formed = 0  # actually not 'valid', but anyway ...
  *         elif (not c_ctxt.wellFormed and not c_ctxt.html and             # <<<<<<<<<<<<<<
@@ -104543,7 +104722,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":652
+      /* "src/lxml/parser.pxi":663
  *             # document.  Better raise an error than allowing for a broken
  *             # tree with mixed encodings.
  *             well_formed = 0             # <<<<<<<<<<<<<<
@@ -104552,7 +104731,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
       __pyx_v_well_formed = 0;
 
-      /* "src/lxml/parser.pxi":644
+      /* "src/lxml/parser.pxi":655
  *                 not context._validator.isvalid()):
  *             well_formed = 0  # actually not 'valid', but anyway ...
  *         elif (not c_ctxt.wellFormed and not c_ctxt.html and             # <<<<<<<<<<<<<<
@@ -104562,7 +104741,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L7;
     }
 
-    /* "src/lxml/parser.pxi":653
+    /* "src/lxml/parser.pxi":664
  *             # tree with mixed encodings.
  *             well_formed = 0
  *         elif recover or (c_ctxt.wellFormed and             # <<<<<<<<<<<<<<
@@ -104582,7 +104761,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L17_bool_binop_done;
     }
 
-    /* "src/lxml/parser.pxi":654
+    /* "src/lxml/parser.pxi":665
  *             well_formed = 0
  *         elif recover or (c_ctxt.wellFormed and
  *                          c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):             # <<<<<<<<<<<<<<
@@ -104593,7 +104772,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     __pyx_t_1 = __pyx_t_3;
     __pyx_L17_bool_binop_done:;
 
-    /* "src/lxml/parser.pxi":653
+    /* "src/lxml/parser.pxi":664
  *             # tree with mixed encodings.
  *             well_formed = 0
  *         elif recover or (c_ctxt.wellFormed and             # <<<<<<<<<<<<<<
@@ -104602,7 +104781,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":655
+      /* "src/lxml/parser.pxi":666
  *         elif recover or (c_ctxt.wellFormed and
  *                          c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):
  *             well_formed = 1             # <<<<<<<<<<<<<<
@@ -104611,7 +104790,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
       __pyx_v_well_formed = 1;
 
-      /* "src/lxml/parser.pxi":653
+      /* "src/lxml/parser.pxi":664
  *             # tree with mixed encodings.
  *             well_formed = 0
  *         elif recover or (c_ctxt.wellFormed and             # <<<<<<<<<<<<<<
@@ -104621,7 +104800,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L7;
     }
 
-    /* "src/lxml/parser.pxi":656
+    /* "src/lxml/parser.pxi":667
  *                          c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):
  *             well_formed = 1
  *         elif not c_ctxt.replaceEntities and not c_ctxt.validate \             # <<<<<<<<<<<<<<
@@ -104635,7 +104814,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L20_bool_binop_done;
     }
 
-    /* "src/lxml/parser.pxi":657
+    /* "src/lxml/parser.pxi":668
  *             well_formed = 1
  *         elif not c_ctxt.replaceEntities and not c_ctxt.validate \
  *                  and context is not None:             # <<<<<<<<<<<<<<
@@ -104653,7 +104832,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     __pyx_t_1 = __pyx_t_2;
     __pyx_L20_bool_binop_done:;
 
-    /* "src/lxml/parser.pxi":656
+    /* "src/lxml/parser.pxi":667
  *                          c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):
  *             well_formed = 1
  *         elif not c_ctxt.replaceEntities and not c_ctxt.validate \             # <<<<<<<<<<<<<<
@@ -104662,14 +104841,14 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":659
+      /* "src/lxml/parser.pxi":670
  *                  and context is not None:
  *             # in this mode, we ignore errors about undefined entities
  *             for error in context._error_log.filter_from_errors():             # <<<<<<<<<<<<<<
  *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_context->_error_log), __pyx_n_s_filter_from_errors); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_context->_error_log), __pyx_n_s_filter_from_errors); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_9 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -104682,10 +104861,10 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
         }
       }
       if (__pyx_t_9) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       } else {
-        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -104693,9 +104872,9 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
         __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
         __pyx_t_7 = NULL;
       } else {
-        __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       for (;;) {
@@ -104703,17 +104882,17 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
           if (likely(PyList_CheckExact(__pyx_t_5))) {
             if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_4);
             #endif
           } else {
             if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_4);
             #endif
           }
@@ -104723,7 +104902,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else {__pyx_filename = __pyx_f[6]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              else {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             break;
           }
@@ -104732,24 +104911,24 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
         __Pyx_XDECREF_SET(__pyx_v_error, __pyx_t_4);
         __pyx_t_4 = 0;
 
-        /* "src/lxml/parser.pxi":660
+        /* "src/lxml/parser.pxi":671
  *             # in this mode, we ignore errors about undefined entities
  *             for error in context._error_log.filter_from_errors():
  *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \             # <<<<<<<<<<<<<<
  *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  *                     well_formed = 0
  */
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_n_s_type); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_n_s_type); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_9);
-        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_WAR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_WAR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __pyx_t_9 = PyObject_RichCompare(__pyx_t_4, __pyx_t_10, Py_NE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_9 = PyObject_RichCompare(__pyx_t_4, __pyx_t_10, Py_NE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         if (__pyx_t_2) {
         } else {
@@ -104757,29 +104936,29 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
           goto __pyx_L26_bool_binop_done;
         }
 
-        /* "src/lxml/parser.pxi":661
+        /* "src/lxml/parser.pxi":672
  *             for error in context._error_log.filter_from_errors():
  *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:             # <<<<<<<<<<<<<<
  *                     well_formed = 0
  *                     break
  */
-        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_n_s_type); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_n_s_type); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_9);
-        __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_ERR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_ERR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __pyx_t_10 = PyObject_RichCompare(__pyx_t_9, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = PyObject_RichCompare(__pyx_t_9, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         __pyx_t_1 = __pyx_t_2;
         __pyx_L26_bool_binop_done:;
 
-        /* "src/lxml/parser.pxi":660
+        /* "src/lxml/parser.pxi":671
  *             # in this mode, we ignore errors about undefined entities
  *             for error in context._error_log.filter_from_errors():
  *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \             # <<<<<<<<<<<<<<
@@ -104788,7 +104967,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
         if (__pyx_t_1) {
 
-          /* "src/lxml/parser.pxi":662
+          /* "src/lxml/parser.pxi":673
  *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  *                     well_formed = 0             # <<<<<<<<<<<<<<
@@ -104797,7 +104976,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
           __pyx_v_well_formed = 0;
 
-          /* "src/lxml/parser.pxi":663
+          /* "src/lxml/parser.pxi":674
  *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  *                     well_formed = 0
  *                     break             # <<<<<<<<<<<<<<
@@ -104806,7 +104985,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
           goto __pyx_L24_break;
 
-          /* "src/lxml/parser.pxi":660
+          /* "src/lxml/parser.pxi":671
  *             # in this mode, we ignore errors about undefined entities
  *             for error in context._error_log.filter_from_errors():
  *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \             # <<<<<<<<<<<<<<
@@ -104815,7 +104994,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
         }
 
-        /* "src/lxml/parser.pxi":659
+        /* "src/lxml/parser.pxi":670
  *                  and context is not None:
  *             # in this mode, we ignore errors about undefined entities
  *             for error in context._error_log.filter_from_errors():             # <<<<<<<<<<<<<<
@@ -104825,7 +105004,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       }
       /*else*/ {
 
-        /* "src/lxml/parser.pxi":665
+        /* "src/lxml/parser.pxi":676
  *                     break
  *             else:
  *                 well_formed = 1             # <<<<<<<<<<<<<<
@@ -104835,7 +105014,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
         __pyx_v_well_formed = 1;
       }
 
-      /* "src/lxml/parser.pxi":659
+      /* "src/lxml/parser.pxi":670
  *                  and context is not None:
  *             # in this mode, we ignore errors about undefined entities
  *             for error in context._error_log.filter_from_errors():             # <<<<<<<<<<<<<<
@@ -104845,7 +105024,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       __pyx_L24_break:;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "src/lxml/parser.pxi":656
+      /* "src/lxml/parser.pxi":667
  *                          c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):
  *             well_formed = 1
  *         elif not c_ctxt.replaceEntities and not c_ctxt.validate \             # <<<<<<<<<<<<<<
@@ -104855,7 +105034,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L7;
     }
 
-    /* "src/lxml/parser.pxi":667
+    /* "src/lxml/parser.pxi":678
  *                 well_formed = 1
  *         else:
  *             well_formed = 0             # <<<<<<<<<<<<<<
@@ -104867,7 +105046,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     }
     __pyx_L7:;
 
-    /* "src/lxml/parser.pxi":669
+    /* "src/lxml/parser.pxi":680
  *             well_formed = 0
  * 
  *         if not well_formed:             # <<<<<<<<<<<<<<
@@ -104877,7 +105056,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     __pyx_t_1 = ((!(__pyx_v_well_formed != 0)) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":670
+      /* "src/lxml/parser.pxi":681
  * 
  *         if not well_formed:
  *             if free_doc:             # <<<<<<<<<<<<<<
@@ -104887,7 +105066,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       __pyx_t_1 = (__pyx_v_free_doc != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/parser.pxi":671
+        /* "src/lxml/parser.pxi":682
  *         if not well_formed:
  *             if free_doc:
  *                 tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
@@ -104896,7 +105075,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
         xmlFreeDoc(__pyx_v_result);
 
-        /* "src/lxml/parser.pxi":670
+        /* "src/lxml/parser.pxi":681
  * 
  *         if not well_formed:
  *             if free_doc:             # <<<<<<<<<<<<<<
@@ -104905,7 +105084,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
       }
 
-      /* "src/lxml/parser.pxi":672
+      /* "src/lxml/parser.pxi":683
  *             if free_doc:
  *                 tree.xmlFreeDoc(result)
  *             result = NULL             # <<<<<<<<<<<<<<
@@ -104914,7 +105093,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
       __pyx_v_result = NULL;
 
-      /* "src/lxml/parser.pxi":669
+      /* "src/lxml/parser.pxi":680
  *             well_formed = 0
  * 
  *         if not well_formed:             # <<<<<<<<<<<<<<
@@ -104923,7 +105102,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
     }
 
-    /* "src/lxml/parser.pxi":640
+    /* "src/lxml/parser.pxi":651
  *         c_ctxt.myDoc = NULL
  * 
  *     if result is not NULL:             # <<<<<<<<<<<<<<
@@ -104932,7 +105111,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":674
+  /* "src/lxml/parser.pxi":685
  *             result = NULL
  * 
  *     if context is not None and context._has_raised():             # <<<<<<<<<<<<<<
@@ -104951,7 +105130,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
   __pyx_L32_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":675
+    /* "src/lxml/parser.pxi":686
  * 
  *     if context is not None and context._has_raised():
  *         if result is not NULL:             # <<<<<<<<<<<<<<
@@ -104961,7 +105140,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     __pyx_t_1 = ((__pyx_v_result != NULL) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":676
+      /* "src/lxml/parser.pxi":687
  *     if context is not None and context._has_raised():
  *         if result is not NULL:
  *             if free_doc:             # <<<<<<<<<<<<<<
@@ -104971,7 +105150,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       __pyx_t_1 = (__pyx_v_free_doc != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/parser.pxi":677
+        /* "src/lxml/parser.pxi":688
  *         if result is not NULL:
  *             if free_doc:
  *                 tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
@@ -104980,7 +105159,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
         xmlFreeDoc(__pyx_v_result);
 
-        /* "src/lxml/parser.pxi":676
+        /* "src/lxml/parser.pxi":687
  *     if context is not None and context._has_raised():
  *         if result is not NULL:
  *             if free_doc:             # <<<<<<<<<<<<<<
@@ -104989,7 +105168,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
       }
 
-      /* "src/lxml/parser.pxi":678
+      /* "src/lxml/parser.pxi":689
  *             if free_doc:
  *                 tree.xmlFreeDoc(result)
  *             result = NULL             # <<<<<<<<<<<<<<
@@ -104998,7 +105177,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
       __pyx_v_result = NULL;
 
-      /* "src/lxml/parser.pxi":675
+      /* "src/lxml/parser.pxi":686
  * 
  *     if context is not None and context._has_raised():
  *         if result is not NULL:             # <<<<<<<<<<<<<<
@@ -105007,16 +105186,16 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
     }
 
-    /* "src/lxml/parser.pxi":679
+    /* "src/lxml/parser.pxi":690
  *                 tree.xmlFreeDoc(result)
  *             result = NULL
  *         context._raise_if_stored()             # <<<<<<<<<<<<<<
  * 
  *     if result is NULL:
  */
-    __pyx_t_11 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._raise_if_stored(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context)); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._raise_if_stored(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context)); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":674
+    /* "src/lxml/parser.pxi":685
  *             result = NULL
  * 
  *     if context is not None and context._has_raised():             # <<<<<<<<<<<<<<
@@ -105025,7 +105204,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":681
+  /* "src/lxml/parser.pxi":692
  *         context._raise_if_stored()
  * 
  *     if result is NULL:             # <<<<<<<<<<<<<<
@@ -105035,7 +105214,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
   __pyx_t_1 = ((__pyx_v_result == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":682
+    /* "src/lxml/parser.pxi":693
  * 
  *     if result is NULL:
  *         if context is not None:             # <<<<<<<<<<<<<<
@@ -105046,7 +105225,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     __pyx_t_3 = (__pyx_t_1 != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/parser.pxi":683
+      /* "src/lxml/parser.pxi":694
  *     if result is NULL:
  *         if context is not None:
  *             _raiseParseError(c_ctxt, filename, context._error_log)             # <<<<<<<<<<<<<<
@@ -105055,10 +105234,10 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
       __pyx_t_5 = ((PyObject *)__pyx_v_context->_error_log);
       __Pyx_INCREF(__pyx_t_5);
-      __pyx_t_11 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_c_ctxt, __pyx_v_filename, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_5)); if (unlikely(__pyx_t_11 == 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_c_ctxt, __pyx_v_filename, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_5)); if (unlikely(__pyx_t_11 == 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "src/lxml/parser.pxi":682
+      /* "src/lxml/parser.pxi":693
  * 
  *     if result is NULL:
  *         if context is not None:             # <<<<<<<<<<<<<<
@@ -105068,7 +105247,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L37;
     }
 
-    /* "src/lxml/parser.pxi":685
+    /* "src/lxml/parser.pxi":696
  *             _raiseParseError(c_ctxt, filename, context._error_log)
  *         else:
  *             _raiseParseError(c_ctxt, filename, None)             # <<<<<<<<<<<<<<
@@ -105076,11 +105255,11 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  *         if result.URL is NULL and filename is not None:
  */
     /*else*/ {
-      __pyx_t_11 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_c_ctxt, __pyx_v_filename, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None)); if (unlikely(__pyx_t_11 == 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_c_ctxt, __pyx_v_filename, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None)); if (unlikely(__pyx_t_11 == 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_L37:;
 
-    /* "src/lxml/parser.pxi":681
+    /* "src/lxml/parser.pxi":692
  *         context._raise_if_stored()
  * 
  *     if result is NULL:             # <<<<<<<<<<<<<<
@@ -105090,7 +105269,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     goto __pyx_L36;
   }
 
-  /* "src/lxml/parser.pxi":687
+  /* "src/lxml/parser.pxi":698
  *             _raiseParseError(c_ctxt, filename, None)
  *     else:
  *         if result.URL is NULL and filename is not None:             # <<<<<<<<<<<<<<
@@ -105110,7 +105289,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     __pyx_L39_bool_binop_done:;
     if (__pyx_t_3) {
 
-      /* "src/lxml/parser.pxi":688
+      /* "src/lxml/parser.pxi":699
  *     else:
  *         if result.URL is NULL and filename is not None:
  *             result.URL = tree.xmlStrdup(_xcstr(filename))             # <<<<<<<<<<<<<<
@@ -105119,7 +105298,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
       __pyx_v_result->URL = xmlStrdup((const xmlChar*)PyBytes_AS_STRING(__pyx_v_filename));
 
-      /* "src/lxml/parser.pxi":687
+      /* "src/lxml/parser.pxi":698
  *             _raiseParseError(c_ctxt, filename, None)
  *     else:
  *         if result.URL is NULL and filename is not None:             # <<<<<<<<<<<<<<
@@ -105128,7 +105307,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
     }
 
-    /* "src/lxml/parser.pxi":689
+    /* "src/lxml/parser.pxi":700
  *         if result.URL is NULL and filename is not None:
  *             result.URL = tree.xmlStrdup(_xcstr(filename))
  *         if result.encoding is NULL:             # <<<<<<<<<<<<<<
@@ -105138,7 +105317,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     __pyx_t_3 = ((__pyx_v_result->encoding == NULL) != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/parser.pxi":690
+      /* "src/lxml/parser.pxi":701
  *             result.URL = tree.xmlStrdup(_xcstr(filename))
  *         if result.encoding is NULL:
  *             result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")             # <<<<<<<<<<<<<<
@@ -105147,7 +105326,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
       __pyx_v_result->encoding = xmlStrdup(((unsigned char *)((unsigned char *)__pyx_k_UTF_8)));
 
-      /* "src/lxml/parser.pxi":689
+      /* "src/lxml/parser.pxi":700
  *         if result.URL is NULL and filename is not None:
  *             result.URL = tree.xmlStrdup(_xcstr(filename))
  *         if result.encoding is NULL:             # <<<<<<<<<<<<<<
@@ -105158,7 +105337,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
   }
   __pyx_L36:;
 
-  /* "src/lxml/parser.pxi":692
+  /* "src/lxml/parser.pxi":703
  *             result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")
  * 
  *     if context._validator is not None and \             # <<<<<<<<<<<<<<
@@ -105173,7 +105352,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     goto __pyx_L43_bool_binop_done;
   }
 
-  /* "src/lxml/parser.pxi":693
+  /* "src/lxml/parser.pxi":704
  * 
  *     if context._validator is not None and \
  *            context._validator._add_default_attributes:             # <<<<<<<<<<<<<<
@@ -105184,7 +105363,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
   __pyx_t_3 = __pyx_t_1;
   __pyx_L43_bool_binop_done:;
 
-  /* "src/lxml/parser.pxi":692
+  /* "src/lxml/parser.pxi":703
  *             result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")
  * 
  *     if context._validator is not None and \             # <<<<<<<<<<<<<<
@@ -105193,7 +105372,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
   if (__pyx_t_3) {
 
-    /* "src/lxml/parser.pxi":697
+    /* "src/lxml/parser.pxi":708
  *         # support inserting default attributes during parse-time
  *         # validation
  *         context._validator.inject_default_attributes(result)             # <<<<<<<<<<<<<<
@@ -105202,7 +105381,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
     __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_inject_default_attributes(__pyx_v_context->_validator, __pyx_v_result);
 
-    /* "src/lxml/parser.pxi":692
+    /* "src/lxml/parser.pxi":703
  *             result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")
  * 
  *     if context._validator is not None and \             # <<<<<<<<<<<<<<
@@ -105211,7 +105390,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":699
+  /* "src/lxml/parser.pxi":710
  *         context._validator.inject_default_attributes(result)
  * 
  *     return result             # <<<<<<<<<<<<<<
@@ -105221,7 +105400,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
   __pyx_r = __pyx_v_result;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":626
+  /* "src/lxml/parser.pxi":637
  *         raise XMLSyntaxError(None, xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0)
  * 
  * cdef xmlDoc* _handleParseResult(_ParserContext context,             # <<<<<<<<<<<<<<
@@ -105244,7 +105423,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":701
+/* "src/lxml/parser.pxi":712
  *     return result
  * 
  * cdef int _fixHtmlDictNames(tree.xmlDict* c_dict, xmlDoc* c_doc) nogil:             # <<<<<<<<<<<<<<
@@ -105258,7 +105437,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
 
-  /* "src/lxml/parser.pxi":703
+  /* "src/lxml/parser.pxi":714
  * cdef int _fixHtmlDictNames(tree.xmlDict* c_dict, xmlDoc* c_doc) nogil:
  *     cdef xmlNode* c_node
  *     if c_doc is NULL:             # <<<<<<<<<<<<<<
@@ -105268,7 +105447,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
   __pyx_t_1 = ((__pyx_v_c_doc == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":704
+    /* "src/lxml/parser.pxi":715
  *     cdef xmlNode* c_node
  *     if c_doc is NULL:
  *         return 0             # <<<<<<<<<<<<<<
@@ -105278,7 +105457,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
     __pyx_r = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":703
+    /* "src/lxml/parser.pxi":714
  * cdef int _fixHtmlDictNames(tree.xmlDict* c_dict, xmlDoc* c_doc) nogil:
  *     cdef xmlNode* c_node
  *     if c_doc is NULL:             # <<<<<<<<<<<<<<
@@ -105287,7 +105466,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
  */
   }
 
-  /* "src/lxml/parser.pxi":705
+  /* "src/lxml/parser.pxi":716
  *     if c_doc is NULL:
  *         return 0
  *     c_node = c_doc.children             # <<<<<<<<<<<<<<
@@ -105297,7 +105476,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
   __pyx_t_2 = __pyx_v_c_doc->children;
   __pyx_v_c_node = __pyx_t_2;
 
-  /* "src/lxml/parser.pxi":706
+  /* "src/lxml/parser.pxi":717
  *         return 0
  *     c_node = c_doc.children
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)             # <<<<<<<<<<<<<<
@@ -105306,7 +105485,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
  */
   BEGIN_FOR_EACH_ELEMENT_FROM(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node, 1);
 
-  /* "src/lxml/parser.pxi":707
+  /* "src/lxml/parser.pxi":718
  *     c_node = c_doc.children
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -105316,7 +105495,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
   __pyx_t_1 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":708
+    /* "src/lxml/parser.pxi":719
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:             # <<<<<<<<<<<<<<
@@ -105326,7 +105505,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
     __pyx_t_1 = ((__pyx_f_4lxml_5etree__fixHtmlDictNodeNames(__pyx_v_c_dict, __pyx_v_c_node) < 0) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":709
+      /* "src/lxml/parser.pxi":720
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
  *             return -1             # <<<<<<<<<<<<<<
@@ -105336,7 +105515,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
       __pyx_r = -1;
       goto __pyx_L0;
 
-      /* "src/lxml/parser.pxi":708
+      /* "src/lxml/parser.pxi":719
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:             # <<<<<<<<<<<<<<
@@ -105345,7 +105524,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
  */
     }
 
-    /* "src/lxml/parser.pxi":707
+    /* "src/lxml/parser.pxi":718
  *     c_node = c_doc.children
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -105354,7 +105533,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
  */
   }
 
-  /* "src/lxml/parser.pxi":710
+  /* "src/lxml/parser.pxi":721
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
  *             return -1
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
@@ -105363,7 +105542,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
  */
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
 
-  /* "src/lxml/parser.pxi":711
+  /* "src/lxml/parser.pxi":722
  *             return -1
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  *     return 0             # <<<<<<<<<<<<<<
@@ -105373,7 +105552,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":701
+  /* "src/lxml/parser.pxi":712
  *     return result
  * 
  * cdef int _fixHtmlDictNames(tree.xmlDict* c_dict, xmlDoc* c_doc) nogil:             # <<<<<<<<<<<<<<
@@ -105386,7 +105565,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":713
+/* "src/lxml/parser.pxi":724
  *     return 0
  * 
  * cdef int _fixHtmlDictSubtreeNames(tree.xmlDict* c_dict, xmlDoc* c_doc,             # <<<<<<<<<<<<<<
@@ -105399,7 +105578,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
   int __pyx_r;
   int __pyx_t_1;
 
-  /* "src/lxml/parser.pxi":720
+  /* "src/lxml/parser.pxi":731
  *     """
  *     cdef xmlNode* c_node
  *     if not c_doc:             # <<<<<<<<<<<<<<
@@ -105409,7 +105588,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
   __pyx_t_1 = ((!(__pyx_v_c_doc != 0)) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":721
+    /* "src/lxml/parser.pxi":732
  *     cdef xmlNode* c_node
  *     if not c_doc:
  *         return 0             # <<<<<<<<<<<<<<
@@ -105419,7 +105598,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
     __pyx_r = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":720
+    /* "src/lxml/parser.pxi":731
  *     """
  *     cdef xmlNode* c_node
  *     if not c_doc:             # <<<<<<<<<<<<<<
@@ -105428,7 +105607,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
  */
   }
 
-  /* "src/lxml/parser.pxi":722
+  /* "src/lxml/parser.pxi":733
  *     if not c_doc:
  *         return 0
  *     if not c_start_node:             # <<<<<<<<<<<<<<
@@ -105438,7 +105617,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
   __pyx_t_1 = ((!(__pyx_v_c_start_node != 0)) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":723
+    /* "src/lxml/parser.pxi":734
  *         return 0
  *     if not c_start_node:
  *         return _fixHtmlDictNames(c_dict, c_doc)             # <<<<<<<<<<<<<<
@@ -105448,7 +105627,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
     __pyx_r = __pyx_f_4lxml_5etree__fixHtmlDictNames(__pyx_v_c_dict, __pyx_v_c_doc);
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":722
+    /* "src/lxml/parser.pxi":733
  *     if not c_doc:
  *         return 0
  *     if not c_start_node:             # <<<<<<<<<<<<<<
@@ -105457,7 +105636,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
  */
   }
 
-  /* "src/lxml/parser.pxi":724
+  /* "src/lxml/parser.pxi":735
  *     if not c_start_node:
  *         return _fixHtmlDictNames(c_dict, c_doc)
  *     c_node = c_start_node             # <<<<<<<<<<<<<<
@@ -105466,7 +105645,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
  */
   __pyx_v_c_node = __pyx_v_c_start_node;
 
-  /* "src/lxml/parser.pxi":725
+  /* "src/lxml/parser.pxi":736
  *         return _fixHtmlDictNames(c_dict, c_doc)
  *     c_node = c_start_node
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)             # <<<<<<<<<<<<<<
@@ -105475,7 +105654,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
  */
   BEGIN_FOR_EACH_ELEMENT_FROM(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node, 1);
 
-  /* "src/lxml/parser.pxi":726
+  /* "src/lxml/parser.pxi":737
  *     c_node = c_start_node
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -105485,7 +105664,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
   __pyx_t_1 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":727
+    /* "src/lxml/parser.pxi":738
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:             # <<<<<<<<<<<<<<
@@ -105495,7 +105674,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
     __pyx_t_1 = ((__pyx_f_4lxml_5etree__fixHtmlDictNodeNames(__pyx_v_c_dict, __pyx_v_c_node) < 0) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":728
+      /* "src/lxml/parser.pxi":739
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
  *             return -1             # <<<<<<<<<<<<<<
@@ -105505,7 +105684,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
       __pyx_r = -1;
       goto __pyx_L0;
 
-      /* "src/lxml/parser.pxi":727
+      /* "src/lxml/parser.pxi":738
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:             # <<<<<<<<<<<<<<
@@ -105514,7 +105693,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
  */
     }
 
-    /* "src/lxml/parser.pxi":726
+    /* "src/lxml/parser.pxi":737
  *     c_node = c_start_node
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -105523,7 +105702,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
  */
   }
 
-  /* "src/lxml/parser.pxi":729
+  /* "src/lxml/parser.pxi":740
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
  *             return -1
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
@@ -105532,7 +105711,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
  */
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
 
-  /* "src/lxml/parser.pxi":730
+  /* "src/lxml/parser.pxi":741
  *             return -1
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  *     return 0             # <<<<<<<<<<<<<<
@@ -105542,7 +105721,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":713
+  /* "src/lxml/parser.pxi":724
  *     return 0
  * 
  * cdef int _fixHtmlDictSubtreeNames(tree.xmlDict* c_dict, xmlDoc* c_doc,             # <<<<<<<<<<<<<<
@@ -105555,7 +105734,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":732
+/* "src/lxml/parser.pxi":743
  *     return 0
  * 
  * cdef inline int _fixHtmlDictNodeNames(tree.xmlDict* c_dict,             # <<<<<<<<<<<<<<
@@ -105570,7 +105749,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
 
-  /* "src/lxml/parser.pxi":735
+  /* "src/lxml/parser.pxi":746
  *                                       xmlNode* c_node) nogil:
  *     cdef xmlNode* c_attr
  *     c_name = tree.xmlDictLookup(c_dict, c_node.name, -1)             # <<<<<<<<<<<<<<
@@ -105579,7 +105758,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
   __pyx_v_c_name = xmlDictLookup(__pyx_v_c_dict, __pyx_v_c_node->name, -1);
 
-  /* "src/lxml/parser.pxi":736
+  /* "src/lxml/parser.pxi":747
  *     cdef xmlNode* c_attr
  *     c_name = tree.xmlDictLookup(c_dict, c_node.name, -1)
  *     if c_name is NULL:             # <<<<<<<<<<<<<<
@@ -105589,7 +105768,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
   __pyx_t_1 = ((__pyx_v_c_name == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":737
+    /* "src/lxml/parser.pxi":748
  *     c_name = tree.xmlDictLookup(c_dict, c_node.name, -1)
  *     if c_name is NULL:
  *         return -1             # <<<<<<<<<<<<<<
@@ -105599,7 +105778,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
     __pyx_r = -1;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":736
+    /* "src/lxml/parser.pxi":747
  *     cdef xmlNode* c_attr
  *     c_name = tree.xmlDictLookup(c_dict, c_node.name, -1)
  *     if c_name is NULL:             # <<<<<<<<<<<<<<
@@ -105608,7 +105787,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
   }
 
-  /* "src/lxml/parser.pxi":738
+  /* "src/lxml/parser.pxi":749
  *     if c_name is NULL:
  *         return -1
  *     if c_name is not c_node.name:             # <<<<<<<<<<<<<<
@@ -105618,7 +105797,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
   __pyx_t_1 = ((__pyx_v_c_name != __pyx_v_c_node->name) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":739
+    /* "src/lxml/parser.pxi":750
  *         return -1
  *     if c_name is not c_node.name:
  *         tree.xmlFree(<char*>c_node.name)             # <<<<<<<<<<<<<<
@@ -105627,7 +105806,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
     xmlFree(((char *)__pyx_v_c_node->name));
 
-    /* "src/lxml/parser.pxi":740
+    /* "src/lxml/parser.pxi":751
  *     if c_name is not c_node.name:
  *         tree.xmlFree(<char*>c_node.name)
  *         c_node.name = c_name             # <<<<<<<<<<<<<<
@@ -105636,7 +105815,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
     __pyx_v_c_node->name = __pyx_v_c_name;
 
-    /* "src/lxml/parser.pxi":738
+    /* "src/lxml/parser.pxi":749
  *     if c_name is NULL:
  *         return -1
  *     if c_name is not c_node.name:             # <<<<<<<<<<<<<<
@@ -105645,7 +105824,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
   }
 
-  /* "src/lxml/parser.pxi":741
+  /* "src/lxml/parser.pxi":752
  *         tree.xmlFree(<char*>c_node.name)
  *         c_node.name = c_name
  *     c_attr = <xmlNode*>c_node.properties             # <<<<<<<<<<<<<<
@@ -105654,7 +105833,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
   __pyx_v_c_attr = ((xmlNode *)__pyx_v_c_node->properties);
 
-  /* "src/lxml/parser.pxi":742
+  /* "src/lxml/parser.pxi":753
  *         c_node.name = c_name
  *     c_attr = <xmlNode*>c_node.properties
  *     while c_attr is not NULL:             # <<<<<<<<<<<<<<
@@ -105665,7 +105844,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
     __pyx_t_1 = ((__pyx_v_c_attr != NULL) != 0);
     if (!__pyx_t_1) break;
 
-    /* "src/lxml/parser.pxi":743
+    /* "src/lxml/parser.pxi":754
  *     c_attr = <xmlNode*>c_node.properties
  *     while c_attr is not NULL:
  *         c_name = tree.xmlDictLookup(c_dict, c_attr.name, -1)             # <<<<<<<<<<<<<<
@@ -105674,7 +105853,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
     __pyx_v_c_name = xmlDictLookup(__pyx_v_c_dict, __pyx_v_c_attr->name, -1);
 
-    /* "src/lxml/parser.pxi":744
+    /* "src/lxml/parser.pxi":755
  *     while c_attr is not NULL:
  *         c_name = tree.xmlDictLookup(c_dict, c_attr.name, -1)
  *         if c_name is NULL:             # <<<<<<<<<<<<<<
@@ -105684,7 +105863,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
     __pyx_t_1 = ((__pyx_v_c_name == NULL) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":745
+      /* "src/lxml/parser.pxi":756
  *         c_name = tree.xmlDictLookup(c_dict, c_attr.name, -1)
  *         if c_name is NULL:
  *             return -1             # <<<<<<<<<<<<<<
@@ -105694,7 +105873,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
       __pyx_r = -1;
       goto __pyx_L0;
 
-      /* "src/lxml/parser.pxi":744
+      /* "src/lxml/parser.pxi":755
  *     while c_attr is not NULL:
  *         c_name = tree.xmlDictLookup(c_dict, c_attr.name, -1)
  *         if c_name is NULL:             # <<<<<<<<<<<<<<
@@ -105703,7 +105882,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
     }
 
-    /* "src/lxml/parser.pxi":746
+    /* "src/lxml/parser.pxi":757
  *         if c_name is NULL:
  *             return -1
  *         if c_name is not c_attr.name:             # <<<<<<<<<<<<<<
@@ -105713,7 +105892,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
     __pyx_t_1 = ((__pyx_v_c_name != __pyx_v_c_attr->name) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":747
+      /* "src/lxml/parser.pxi":758
  *             return -1
  *         if c_name is not c_attr.name:
  *             tree.xmlFree(<char*>c_attr.name)             # <<<<<<<<<<<<<<
@@ -105722,7 +105901,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
       xmlFree(((char *)__pyx_v_c_attr->name));
 
-      /* "src/lxml/parser.pxi":748
+      /* "src/lxml/parser.pxi":759
  *         if c_name is not c_attr.name:
  *             tree.xmlFree(<char*>c_attr.name)
  *             c_attr.name = c_name             # <<<<<<<<<<<<<<
@@ -105731,7 +105910,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
       __pyx_v_c_attr->name = __pyx_v_c_name;
 
-      /* "src/lxml/parser.pxi":746
+      /* "src/lxml/parser.pxi":757
  *         if c_name is NULL:
  *             return -1
  *         if c_name is not c_attr.name:             # <<<<<<<<<<<<<<
@@ -105740,7 +105919,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
     }
 
-    /* "src/lxml/parser.pxi":749
+    /* "src/lxml/parser.pxi":760
  *             tree.xmlFree(<char*>c_attr.name)
  *             c_attr.name = c_name
  *         c_attr = c_attr.next             # <<<<<<<<<<<<<<
@@ -105751,7 +105930,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
     __pyx_v_c_attr = __pyx_t_2;
   }
 
-  /* "src/lxml/parser.pxi":750
+  /* "src/lxml/parser.pxi":761
  *             c_attr.name = c_name
  *         c_attr = c_attr.next
  *     return 0             # <<<<<<<<<<<<<<
@@ -105761,7 +105940,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":732
+  /* "src/lxml/parser.pxi":743
  *     return 0
  * 
  * cdef inline int _fixHtmlDictNodeNames(tree.xmlDict* c_dict,             # <<<<<<<<<<<<<<
@@ -105774,7 +105953,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":770
+/* "src/lxml/parser.pxi":781
  *     cdef tuple _events_to_collect  # (event_types, tag)
  * 
  *     def __init__(self, int parse_options, bint for_html, XMLSchema schema,             # <<<<<<<<<<<<<<
@@ -105827,46 +106006,46 @@ static int __pyx_pw_4lxml_5etree_11_BaseParser_1__init__(PyObject *__pyx_v_self,
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_for_html)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_schema)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_remove_comments)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 3); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 3); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  4:
         if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_remove_pis)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 4); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 4); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  5:
         if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_strip_cdata)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 5); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 5); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  6:
         if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_collect_ids)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 6); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 6); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  7:
         if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_target)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 7); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 7); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  8:
         if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_encoding)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 8); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 8); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       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 = 770; __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 = 781; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
       goto __pyx_L5_argtuple_error;
@@ -105881,8 +106060,8 @@ static int __pyx_pw_4lxml_5etree_11_BaseParser_1__init__(PyObject *__pyx_v_self,
       values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
       values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
     }
-    __pyx_v_parse_options = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_parse_options == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_for_html = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_for_html == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_parse_options = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_parse_options == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_for_html = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_for_html == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)values[2]);
     __pyx_v_remove_comments = values[3];
     __pyx_v_remove_pis = values[4];
@@ -105893,13 +106072,13 @@ static int __pyx_pw_4lxml_5etree_11_BaseParser_1__init__(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._BaseParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema), __pyx_ptype_4lxml_5etree_XMLSchema, 1, "schema", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema), __pyx_ptype_4lxml_5etree_XMLSchema, 1, "schema", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_pf_4lxml_5etree_11_BaseParser___init__(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_parse_options, __pyx_v_for_html, __pyx_v_schema, __pyx_v_remove_comments, __pyx_v_remove_pis, __pyx_v_strip_cdata, __pyx_v_collect_ids, __pyx_v_target, __pyx_v_encoding);
 
   /* function exit code */
@@ -105925,7 +106104,7 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
   __Pyx_RefNannySetupContext("__init__", 0);
   __Pyx_INCREF(__pyx_v_encoding);
 
-  /* "src/lxml/parser.pxi":775
+  /* "src/lxml/parser.pxi":786
  *         cdef tree.xmlCharEncodingHandler* enchandler
  *         cdef int c_encoding
  *         if not isinstance(self, (XMLParser, HTMLParser)):             # <<<<<<<<<<<<<<
@@ -105946,7 +106125,7 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":776
+    /* "src/lxml/parser.pxi":787
  *         cdef int c_encoding
  *         if not isinstance(self, (XMLParser, HTMLParser)):
  *             raise TypeError, u"This class cannot be instantiated"             # <<<<<<<<<<<<<<
@@ -105954,9 +106133,9 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
  *         self._parse_options = parse_options
  */
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_This_class_cannot_be_instantiate, 0, 0);
-    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":775
+    /* "src/lxml/parser.pxi":786
  *         cdef tree.xmlCharEncodingHandler* enchandler
  *         cdef int c_encoding
  *         if not isinstance(self, (XMLParser, HTMLParser)):             # <<<<<<<<<<<<<<
@@ -105965,7 +106144,7 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
  */
   }
 
-  /* "src/lxml/parser.pxi":778
+  /* "src/lxml/parser.pxi":789
  *             raise TypeError, u"This class cannot be instantiated"
  * 
  *         self._parse_options = parse_options             # <<<<<<<<<<<<<<
@@ -105974,7 +106153,7 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
  */
   __pyx_v_self->_parse_options = __pyx_v_parse_options;
 
-  /* "src/lxml/parser.pxi":779
+  /* "src/lxml/parser.pxi":790
  * 
  *         self._parse_options = parse_options
  *         self.target = target             # <<<<<<<<<<<<<<
@@ -105987,7 +106166,7 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
   __Pyx_DECREF(__pyx_v_self->target);
   __pyx_v_self->target = __pyx_v_target;
 
-  /* "src/lxml/parser.pxi":780
+  /* "src/lxml/parser.pxi":791
  *         self._parse_options = parse_options
  *         self.target = target
  *         self._for_html = for_html             # <<<<<<<<<<<<<<
@@ -105996,47 +106175,47 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
  */
   __pyx_v_self->_for_html = __pyx_v_for_html;
 
-  /* "src/lxml/parser.pxi":781
+  /* "src/lxml/parser.pxi":792
  *         self.target = target
  *         self._for_html = for_html
  *         self._remove_comments = remove_comments             # <<<<<<<<<<<<<<
  *         self._remove_pis = remove_pis
  *         self._strip_cdata = strip_cdata
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_remove_comments); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_remove_comments); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_self->_remove_comments = __pyx_t_2;
 
-  /* "src/lxml/parser.pxi":782
+  /* "src/lxml/parser.pxi":793
  *         self._for_html = for_html
  *         self._remove_comments = remove_comments
  *         self._remove_pis = remove_pis             # <<<<<<<<<<<<<<
  *         self._strip_cdata = strip_cdata
  *         self._collect_ids = collect_ids
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_remove_pis); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_remove_pis); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_self->_remove_pis = __pyx_t_2;
 
-  /* "src/lxml/parser.pxi":783
+  /* "src/lxml/parser.pxi":794
  *         self._remove_comments = remove_comments
  *         self._remove_pis = remove_pis
  *         self._strip_cdata = strip_cdata             # <<<<<<<<<<<<<<
  *         self._collect_ids = collect_ids
  *         self._schema = schema
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_strip_cdata); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_strip_cdata); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_self->_strip_cdata = __pyx_t_2;
 
-  /* "src/lxml/parser.pxi":784
+  /* "src/lxml/parser.pxi":795
  *         self._remove_pis = remove_pis
  *         self._strip_cdata = strip_cdata
  *         self._collect_ids = collect_ids             # <<<<<<<<<<<<<<
  *         self._schema = schema
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_collect_ids); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_collect_ids); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_self->_collect_ids = __pyx_t_2;
 
-  /* "src/lxml/parser.pxi":785
+  /* "src/lxml/parser.pxi":796
  *         self._strip_cdata = strip_cdata
  *         self._collect_ids = collect_ids
  *         self._schema = schema             # <<<<<<<<<<<<<<
@@ -106049,14 +106228,14 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_schema));
   __pyx_v_self->_schema = __pyx_v_schema;
 
-  /* "src/lxml/parser.pxi":787
+  /* "src/lxml/parser.pxi":798
  *         self._schema = schema
  * 
  *         self._resolvers = _ResolverRegistry()             # <<<<<<<<<<<<<<
  * 
  *         if encoding is None:
  */
-  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ResolverRegistry), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ResolverRegistry), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_4);
   __Pyx_GOTREF(__pyx_v_self->_resolvers);
@@ -106064,7 +106243,7 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
   __pyx_v_self->_resolvers = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "src/lxml/parser.pxi":789
+  /* "src/lxml/parser.pxi":800
  *         self._resolvers = _ResolverRegistry()
  * 
  *         if encoding is None:             # <<<<<<<<<<<<<<
@@ -106075,7 +106254,7 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":790
+    /* "src/lxml/parser.pxi":801
  * 
  *         if encoding is None:
  *             self._default_encoding = None             # <<<<<<<<<<<<<<
@@ -106088,7 +106267,7 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
     __Pyx_DECREF(__pyx_v_self->_default_encoding);
     __pyx_v_self->_default_encoding = Py_None;
 
-    /* "src/lxml/parser.pxi":789
+    /* "src/lxml/parser.pxi":800
  *         self._resolvers = _ResolverRegistry()
  * 
  *         if encoding is None:             # <<<<<<<<<<<<<<
@@ -106098,7 +106277,7 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
     goto __pyx_L6;
   }
 
-  /* "src/lxml/parser.pxi":792
+  /* "src/lxml/parser.pxi":803
  *             self._default_encoding = None
  *         else:
  *             encoding = _utf8(encoding)             # <<<<<<<<<<<<<<
@@ -106106,12 +106285,12 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
  *             if enchandler is NULL:
  */
   /*else*/ {
-    __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/parser.pxi":793
+    /* "src/lxml/parser.pxi":804
  *         else:
  *             encoding = _utf8(encoding)
  *             enchandler = tree.xmlFindCharEncodingHandler(_cstr(encoding))             # <<<<<<<<<<<<<<
@@ -106120,7 +106299,7 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
  */
     __pyx_v_enchandler = xmlFindCharEncodingHandler(PyBytes_AS_STRING(__pyx_v_encoding));
 
-    /* "src/lxml/parser.pxi":794
+    /* "src/lxml/parser.pxi":805
  *             encoding = _utf8(encoding)
  *             enchandler = tree.xmlFindCharEncodingHandler(_cstr(encoding))
  *             if enchandler is NULL:             # <<<<<<<<<<<<<<
@@ -106130,20 +106309,20 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
     __pyx_t_1 = ((__pyx_v_enchandler == NULL) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":795
+      /* "src/lxml/parser.pxi":806
  *             enchandler = tree.xmlFindCharEncodingHandler(_cstr(encoding))
  *             if enchandler is NULL:
  *                 raise LookupError, u"unknown encoding: '%s'" % encoding             # <<<<<<<<<<<<<<
  *             tree.xmlCharEncCloseFunc(enchandler)
  *             self._default_encoding = encoding
  */
-      __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_unknown_encoding_s, __pyx_v_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_unknown_encoding_s, __pyx_v_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_Raise(__pyx_builtin_LookupError, __pyx_t_4, 0, 0);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/parser.pxi":794
+      /* "src/lxml/parser.pxi":805
  *             encoding = _utf8(encoding)
  *             enchandler = tree.xmlFindCharEncodingHandler(_cstr(encoding))
  *             if enchandler is NULL:             # <<<<<<<<<<<<<<
@@ -106152,7 +106331,7 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
  */
     }
 
-    /* "src/lxml/parser.pxi":796
+    /* "src/lxml/parser.pxi":807
  *             if enchandler is NULL:
  *                 raise LookupError, u"unknown encoding: '%s'" % encoding
  *             tree.xmlCharEncCloseFunc(enchandler)             # <<<<<<<<<<<<<<
@@ -106161,7 +106340,7 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
  */
     xmlCharEncCloseFunc(__pyx_v_enchandler);
 
-    /* "src/lxml/parser.pxi":797
+    /* "src/lxml/parser.pxi":808
  *                 raise LookupError, u"unknown encoding: '%s'" % encoding
  *             tree.xmlCharEncCloseFunc(enchandler)
  *             self._default_encoding = encoding             # <<<<<<<<<<<<<<
@@ -106176,7 +106355,7 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
   }
   __pyx_L6:;
 
-  /* "src/lxml/parser.pxi":770
+  /* "src/lxml/parser.pxi":781
  *     cdef tuple _events_to_collect  # (event_types, tag)
  * 
  *     def __init__(self, int parse_options, bint for_html, XMLSchema schema,             # <<<<<<<<<<<<<<
@@ -106197,7 +106376,7 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":799
+/* "src/lxml/parser.pxi":810
  *             self._default_encoding = encoding
  * 
  *     cdef _setBaseURL(self, base_url):             # <<<<<<<<<<<<<<
@@ -106214,23 +106393,23 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__setBaseURL(struct __pyx_obj
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_setBaseURL", 0);
 
-  /* "src/lxml/parser.pxi":800
+  /* "src/lxml/parser.pxi":811
  * 
  *     cdef _setBaseURL(self, base_url):
  *         self._filename = _encodeFilename(base_url)             # <<<<<<<<<<<<<<
  * 
  *     cdef _collectEvents(self, event_types, tag):
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_base_url); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_base_url); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_filename);
   __Pyx_DECREF(__pyx_v_self->_filename);
   __pyx_v_self->_filename = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":799
+  /* "src/lxml/parser.pxi":810
  *             self._default_encoding = encoding
  * 
  *     cdef _setBaseURL(self, base_url):             # <<<<<<<<<<<<<<
@@ -106251,7 +106430,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__setBaseURL(struct __pyx_obj
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":802
+/* "src/lxml/parser.pxi":813
  *         self._filename = _encodeFilename(base_url)
  * 
  *     cdef _collectEvents(self, event_types, tag):             # <<<<<<<<<<<<<<
@@ -106273,7 +106452,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__collectEvents(struct __pyx_
   __Pyx_RefNannySetupContext("_collectEvents", 0);
   __Pyx_INCREF(__pyx_v_event_types);
 
-  /* "src/lxml/parser.pxi":803
+  /* "src/lxml/parser.pxi":814
  * 
  *     cdef _collectEvents(self, event_types, tag):
  *         if event_types is None:             # <<<<<<<<<<<<<<
@@ -106284,7 +106463,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__collectEvents(struct __pyx_
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":804
+    /* "src/lxml/parser.pxi":815
  *     cdef _collectEvents(self, event_types, tag):
  *         if event_types is None:
  *             event_types = ()             # <<<<<<<<<<<<<<
@@ -106294,7 +106473,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__collectEvents(struct __pyx_
     __Pyx_INCREF(__pyx_empty_tuple);
     __Pyx_DECREF_SET(__pyx_v_event_types, __pyx_empty_tuple);
 
-    /* "src/lxml/parser.pxi":803
+    /* "src/lxml/parser.pxi":814
  * 
  *     cdef _collectEvents(self, event_types, tag):
  *         if event_types is None:             # <<<<<<<<<<<<<<
@@ -106304,7 +106483,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__collectEvents(struct __pyx_
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":806
+  /* "src/lxml/parser.pxi":817
  *             event_types = ()
  *         else:
  *             event_types = tuple(set(event_types))             # <<<<<<<<<<<<<<
@@ -106312,33 +106491,33 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__collectEvents(struct __pyx_
  *         self._events_to_collect = (event_types, tag)
  */
   /*else*/ {
-    __pyx_t_3 = PySet_New(__pyx_v_event_types); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PySet_New(__pyx_v_event_types); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PySequence_Tuple(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PySequence_Tuple(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF_SET(__pyx_v_event_types, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/parser.pxi":807
+    /* "src/lxml/parser.pxi":818
  *         else:
  *             event_types = tuple(set(event_types))
  *             _buildParseEventFilter(event_types)  # purely for validation             # <<<<<<<<<<<<<<
  *         self._events_to_collect = (event_types, tag)
  * 
  */
-    __pyx_t_5 = __pyx_f_4lxml_5etree__buildParseEventFilter(__pyx_v_event_types); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __pyx_f_4lxml_5etree__buildParseEventFilter(__pyx_v_event_types); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":808
+  /* "src/lxml/parser.pxi":819
  *             event_types = tuple(set(event_types))
  *             _buildParseEventFilter(event_types)  # purely for validation
  *         self._events_to_collect = (event_types, tag)             # <<<<<<<<<<<<<<
  * 
  *     cdef _ParserContext _getParserContext(self):
  */
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(__pyx_v_event_types);
   __Pyx_GIVEREF(__pyx_v_event_types);
@@ -106352,7 +106531,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__collectEvents(struct __pyx_
   __pyx_v_self->_events_to_collect = ((PyObject*)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "src/lxml/parser.pxi":802
+  /* "src/lxml/parser.pxi":813
  *         self._filename = _encodeFilename(base_url)
  * 
  *     cdef _collectEvents(self, event_types, tag):             # <<<<<<<<<<<<<<
@@ -106375,7 +106554,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__collectEvents(struct __pyx_
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":810
+/* "src/lxml/parser.pxi":821
  *         self._events_to_collect = (event_types, tag)
  * 
  *     cdef _ParserContext _getParserContext(self):             # <<<<<<<<<<<<<<
@@ -106399,7 +106578,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_getParserContext", 0);
 
-  /* "src/lxml/parser.pxi":812
+  /* "src/lxml/parser.pxi":823
  *     cdef _ParserContext _getParserContext(self):
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         if self._parser_context is None:             # <<<<<<<<<<<<<<
@@ -106410,7 +106589,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":813
+    /* "src/lxml/parser.pxi":824
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         if self._parser_context is None:
  *             self._parser_context = self._createContext(self.target, None)             # <<<<<<<<<<<<<<
@@ -106419,7 +106598,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
  */
     __pyx_t_3 = __pyx_v_self->target;
     __Pyx_INCREF(__pyx_t_3);
-    __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_createContext(__pyx_v_self, __pyx_t_3, Py_None)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_createContext(__pyx_v_self, __pyx_t_3, Py_None)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GIVEREF(__pyx_t_4);
@@ -106428,7 +106607,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     __pyx_v_self->_parser_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/parser.pxi":814
+    /* "src/lxml/parser.pxi":825
  *         if self._parser_context is None:
  *             self._parser_context = self._createContext(self.target, None)
  *             self._parser_context._collect_ids = self._collect_ids             # <<<<<<<<<<<<<<
@@ -106438,7 +106617,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     __pyx_t_2 = __pyx_v_self->_collect_ids;
     __pyx_v_self->_parser_context->_collect_ids = __pyx_t_2;
 
-    /* "src/lxml/parser.pxi":815
+    /* "src/lxml/parser.pxi":826
  *             self._parser_context = self._createContext(self.target, None)
  *             self._parser_context._collect_ids = self._collect_ids
  *             if self._schema is not None:             # <<<<<<<<<<<<<<
@@ -106449,17 +106628,17 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":817
+      /* "src/lxml/parser.pxi":828
  *             if self._schema is not None:
  *                 self._parser_context._validator = \
  *                     self._schema._newSaxValidator(             # <<<<<<<<<<<<<<
  *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
  *             pctxt = self._newParserCtxt()
  */
-      __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLSchema *)__pyx_v_self->_schema->__pyx_base.__pyx_vtab)->_newSaxValidator(__pyx_v_self->_schema, (__pyx_v_self->_parse_options & XML_PARSE_DTDATTR))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLSchema *)__pyx_v_self->_schema->__pyx_base.__pyx_vtab)->_newSaxValidator(__pyx_v_self->_schema, (__pyx_v_self->_parse_options & XML_PARSE_DTDATTR))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
 
-      /* "src/lxml/parser.pxi":816
+      /* "src/lxml/parser.pxi":827
  *             self._parser_context._collect_ids = self._collect_ids
  *             if self._schema is not None:
  *                 self._parser_context._validator = \             # <<<<<<<<<<<<<<
@@ -106472,7 +106651,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
       __pyx_v_self->_parser_context->_validator = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "src/lxml/parser.pxi":815
+      /* "src/lxml/parser.pxi":826
  *             self._parser_context = self._createContext(self.target, None)
  *             self._parser_context._collect_ids = self._collect_ids
  *             if self._schema is not None:             # <<<<<<<<<<<<<<
@@ -106481,17 +106660,17 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
  */
     }
 
-    /* "src/lxml/parser.pxi":819
+    /* "src/lxml/parser.pxi":830
  *                     self._schema._newSaxValidator(
  *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
  *             pctxt = self._newParserCtxt()             # <<<<<<<<<<<<<<
  *             _initParserContext(self._parser_context, self._resolvers, pctxt)
  *             self._configureSaxContext(pctxt)
  */
-    __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_newParserCtxt(__pyx_v_self); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_newParserCtxt(__pyx_v_self); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_pctxt = __pyx_t_5;
 
-    /* "src/lxml/parser.pxi":820
+    /* "src/lxml/parser.pxi":831
  *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
  *             pctxt = self._newParserCtxt()
  *             _initParserContext(self._parser_context, self._resolvers, pctxt)             # <<<<<<<<<<<<<<
@@ -106502,22 +106681,22 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     __Pyx_INCREF(__pyx_t_4);
     __pyx_t_3 = ((PyObject *)__pyx_v_self->_resolvers);
     __Pyx_INCREF(__pyx_t_3);
-    __pyx_t_6 = __pyx_f_4lxml_5etree__initParserContext(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_4), ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_3), __pyx_v_pctxt); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __pyx_f_4lxml_5etree__initParserContext(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_4), ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_3), __pyx_v_pctxt); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "src/lxml/parser.pxi":821
+    /* "src/lxml/parser.pxi":832
  *             pctxt = self._newParserCtxt()
  *             _initParserContext(self._parser_context, self._resolvers, pctxt)
  *             self._configureSaxContext(pctxt)             # <<<<<<<<<<<<<<
  *         return self._parser_context
  * 
  */
-    __pyx_t_7 = __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(__pyx_v_self, __pyx_v_pctxt); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(__pyx_v_self, __pyx_v_pctxt); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":812
+    /* "src/lxml/parser.pxi":823
  *     cdef _ParserContext _getParserContext(self):
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         if self._parser_context is None:             # <<<<<<<<<<<<<<
@@ -106526,7 +106705,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
  */
   }
 
-  /* "src/lxml/parser.pxi":822
+  /* "src/lxml/parser.pxi":833
  *             _initParserContext(self._parser_context, self._resolvers, pctxt)
  *             self._configureSaxContext(pctxt)
  *         return self._parser_context             # <<<<<<<<<<<<<<
@@ -106538,7 +106717,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   __pyx_r = __pyx_v_self->_parser_context;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":810
+  /* "src/lxml/parser.pxi":821
  *         self._events_to_collect = (event_types, tag)
  * 
  *     cdef _ParserContext _getParserContext(self):             # <<<<<<<<<<<<<<
@@ -106559,7 +106738,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":824
+/* "src/lxml/parser.pxi":835
  *         return self._parser_context
  * 
  *     cdef _ParserContext _getPushParserContext(self):             # <<<<<<<<<<<<<<
@@ -106583,7 +106762,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_getPushParserContext", 0);
 
-  /* "src/lxml/parser.pxi":826
+  /* "src/lxml/parser.pxi":837
  *     cdef _ParserContext _getPushParserContext(self):
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         if self._push_parser_context is None:             # <<<<<<<<<<<<<<
@@ -106594,7 +106773,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":828
+    /* "src/lxml/parser.pxi":839
  *         if self._push_parser_context is None:
  *             self._push_parser_context = self._createContext(
  *                 self.target, self._events_to_collect)             # <<<<<<<<<<<<<<
@@ -106606,14 +106785,14 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     __pyx_t_4 = __pyx_v_self->_events_to_collect;
     __Pyx_INCREF(__pyx_t_4);
 
-    /* "src/lxml/parser.pxi":827
+    /* "src/lxml/parser.pxi":838
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         if self._push_parser_context is None:
  *             self._push_parser_context = self._createContext(             # <<<<<<<<<<<<<<
  *                 self.target, self._events_to_collect)
  *             self._push_parser_context._collect_ids = self._collect_ids
  */
-    __pyx_t_5 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_createContext(__pyx_v_self, __pyx_t_3, __pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_createContext(__pyx_v_self, __pyx_t_3, __pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -106623,7 +106802,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     __pyx_v_self->_push_parser_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "src/lxml/parser.pxi":829
+    /* "src/lxml/parser.pxi":840
  *             self._push_parser_context = self._createContext(
  *                 self.target, self._events_to_collect)
  *             self._push_parser_context._collect_ids = self._collect_ids             # <<<<<<<<<<<<<<
@@ -106633,7 +106812,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     __pyx_t_2 = __pyx_v_self->_collect_ids;
     __pyx_v_self->_push_parser_context->_collect_ids = __pyx_t_2;
 
-    /* "src/lxml/parser.pxi":830
+    /* "src/lxml/parser.pxi":841
  *                 self.target, self._events_to_collect)
  *             self._push_parser_context._collect_ids = self._collect_ids
  *             if self._schema is not None:             # <<<<<<<<<<<<<<
@@ -106644,17 +106823,17 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":832
+      /* "src/lxml/parser.pxi":843
  *             if self._schema is not None:
  *                 self._push_parser_context._validator = \
  *                     self._schema._newSaxValidator(             # <<<<<<<<<<<<<<
  *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
  *             pctxt = self._newPushParserCtxt()
  */
-      __pyx_t_5 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLSchema *)__pyx_v_self->_schema->__pyx_base.__pyx_vtab)->_newSaxValidator(__pyx_v_self->_schema, (__pyx_v_self->_parse_options & XML_PARSE_DTDATTR))); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLSchema *)__pyx_v_self->_schema->__pyx_base.__pyx_vtab)->_newSaxValidator(__pyx_v_self->_schema, (__pyx_v_self->_parse_options & XML_PARSE_DTDATTR))); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
 
-      /* "src/lxml/parser.pxi":831
+      /* "src/lxml/parser.pxi":842
  *             self._push_parser_context._collect_ids = self._collect_ids
  *             if self._schema is not None:
  *                 self._push_parser_context._validator = \             # <<<<<<<<<<<<<<
@@ -106667,7 +106846,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
       __pyx_v_self->_push_parser_context->_validator = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "src/lxml/parser.pxi":830
+      /* "src/lxml/parser.pxi":841
  *                 self.target, self._events_to_collect)
  *             self._push_parser_context._collect_ids = self._collect_ids
  *             if self._schema is not None:             # <<<<<<<<<<<<<<
@@ -106676,17 +106855,17 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
  */
     }
 
-    /* "src/lxml/parser.pxi":834
+    /* "src/lxml/parser.pxi":845
  *                     self._schema._newSaxValidator(
  *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
  *             pctxt = self._newPushParserCtxt()             # <<<<<<<<<<<<<<
  *             _initParserContext(
  *                 self._push_parser_context, self._resolvers, pctxt)
  */
-    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_newPushParserCtxt(__pyx_v_self); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_newPushParserCtxt(__pyx_v_self); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_pctxt = __pyx_t_6;
 
-    /* "src/lxml/parser.pxi":836
+    /* "src/lxml/parser.pxi":847
  *             pctxt = self._newPushParserCtxt()
  *             _initParserContext(
  *                 self._push_parser_context, self._resolvers, pctxt)             # <<<<<<<<<<<<<<
@@ -106698,29 +106877,29 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     __pyx_t_4 = ((PyObject *)__pyx_v_self->_resolvers);
     __Pyx_INCREF(__pyx_t_4);
 
-    /* "src/lxml/parser.pxi":835
+    /* "src/lxml/parser.pxi":846
  *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
  *             pctxt = self._newPushParserCtxt()
  *             _initParserContext(             # <<<<<<<<<<<<<<
  *                 self._push_parser_context, self._resolvers, pctxt)
  *             self._configureSaxContext(pctxt)
  */
-    __pyx_t_3 = __pyx_f_4lxml_5etree__initParserContext(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_5), ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_4), __pyx_v_pctxt); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __pyx_f_4lxml_5etree__initParserContext(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_5), ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_4), __pyx_v_pctxt); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":837
+    /* "src/lxml/parser.pxi":848
  *             _initParserContext(
  *                 self._push_parser_context, self._resolvers, pctxt)
  *             self._configureSaxContext(pctxt)             # <<<<<<<<<<<<<<
  *         return self._push_parser_context
  * 
  */
-    __pyx_t_7 = __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(__pyx_v_self, __pyx_v_pctxt); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(__pyx_v_self, __pyx_v_pctxt); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":826
+    /* "src/lxml/parser.pxi":837
  *     cdef _ParserContext _getPushParserContext(self):
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         if self._push_parser_context is None:             # <<<<<<<<<<<<<<
@@ -106729,7 +106908,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
  */
   }
 
-  /* "src/lxml/parser.pxi":838
+  /* "src/lxml/parser.pxi":849
  *                 self._push_parser_context, self._resolvers, pctxt)
  *             self._configureSaxContext(pctxt)
  *         return self._push_parser_context             # <<<<<<<<<<<<<<
@@ -106741,7 +106920,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   __pyx_r = __pyx_v_self->_push_parser_context;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":824
+  /* "src/lxml/parser.pxi":835
  *         return self._parser_context
  * 
  *     cdef _ParserContext _getPushParserContext(self):             # <<<<<<<<<<<<<<
@@ -106762,7 +106941,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":840
+/* "src/lxml/parser.pxi":851
  *         return self._push_parser_context
  * 
  *     cdef _ParserContext _createContext(self, target, events_to_collect):             # <<<<<<<<<<<<<<
@@ -106788,7 +106967,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_createContext", 0);
 
-  /* "src/lxml/parser.pxi":842
+  /* "src/lxml/parser.pxi":853
  *     cdef _ParserContext _createContext(self, target, events_to_collect):
  *         cdef _SaxParserContext sax_context
  *         if target is not None:             # <<<<<<<<<<<<<<
@@ -106799,34 +106978,34 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":843
+    /* "src/lxml/parser.pxi":854
  *         cdef _SaxParserContext sax_context
  *         if target is not None:
  *             sax_context = _TargetParserContext(self)             # <<<<<<<<<<<<<<
  *             (<_TargetParserContext>sax_context)._setTarget(target)
  *         elif events_to_collect:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self));
-    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__TargetParserContext), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__TargetParserContext), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_sax_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/parser.pxi":844
+    /* "src/lxml/parser.pxi":855
  *         if target is not None:
  *             sax_context = _TargetParserContext(self)
  *             (<_TargetParserContext>sax_context)._setTarget(target)             # <<<<<<<<<<<<<<
  *         elif events_to_collect:
  *             sax_context = _SaxParserContext(self)
  */
-    __pyx_t_5 = __pyx_f_4lxml_5etree_20_TargetParserContext__setTarget(((struct __pyx_obj_4lxml_5etree__TargetParserContext *)__pyx_v_sax_context), __pyx_v_target); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __pyx_f_4lxml_5etree_20_TargetParserContext__setTarget(((struct __pyx_obj_4lxml_5etree__TargetParserContext *)__pyx_v_sax_context), __pyx_v_target); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":842
+    /* "src/lxml/parser.pxi":853
  *     cdef _ParserContext _createContext(self, target, events_to_collect):
  *         cdef _SaxParserContext sax_context
  *         if target is not None:             # <<<<<<<<<<<<<<
@@ -106836,35 +107015,35 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":845
+  /* "src/lxml/parser.pxi":856
  *             sax_context = _TargetParserContext(self)
  *             (<_TargetParserContext>sax_context)._setTarget(target)
  *         elif events_to_collect:             # <<<<<<<<<<<<<<
  *             sax_context = _SaxParserContext(self)
  *         else:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_events_to_collect); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_events_to_collect); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":846
+    /* "src/lxml/parser.pxi":857
  *             (<_TargetParserContext>sax_context)._setTarget(target)
  *         elif events_to_collect:
  *             sax_context = _SaxParserContext(self)             # <<<<<<<<<<<<<<
  *         else:
  *             # nothing special to configure
  */
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_self));
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__SaxParserContext), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__SaxParserContext), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_v_sax_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":845
+    /* "src/lxml/parser.pxi":856
  *             sax_context = _TargetParserContext(self)
  *             (<_TargetParserContext>sax_context)._setTarget(target)
  *         elif events_to_collect:             # <<<<<<<<<<<<<<
@@ -106874,7 +107053,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":849
+  /* "src/lxml/parser.pxi":860
  *         else:
  *             # nothing special to configure
  *             return _ParserContext()             # <<<<<<<<<<<<<<
@@ -106883,7 +107062,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
  */
   /*else*/ {
     __Pyx_XDECREF(((PyObject *)__pyx_r));
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ParserContext), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ParserContext), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_3);
     __pyx_t_3 = 0;
@@ -106891,17 +107070,17 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":850
+  /* "src/lxml/parser.pxi":861
  *             # nothing special to configure
  *             return _ParserContext()
  *         if events_to_collect:             # <<<<<<<<<<<<<<
  *             events, tag = events_to_collect
  *             sax_context._setEventFilter(events, tag)
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_events_to_collect); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_events_to_collect); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":851
+    /* "src/lxml/parser.pxi":862
  *             return _ParserContext()
  *         if events_to_collect:
  *             events, tag = events_to_collect             # <<<<<<<<<<<<<<
@@ -106918,7 +107097,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[6]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[6]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -106931,21 +107110,21 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
       __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[6]; __pyx_lineno = 851; __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 = 862; __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[6]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       #endif
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_6 = PyObject_GetIter(__pyx_v_events_to_collect); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyObject_GetIter(__pyx_v_events_to_collect); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
       index = 0; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L5_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_3);
       index = 1; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_4);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 862; __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;
@@ -106953,7 +107132,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
       __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 = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L6_unpacking_done:;
     }
     __pyx_v_events = __pyx_t_3;
@@ -106961,18 +107140,18 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     __pyx_v_tag = __pyx_t_4;
     __pyx_t_4 = 0;
 
-    /* "src/lxml/parser.pxi":852
+    /* "src/lxml/parser.pxi":863
  *         if events_to_collect:
  *             events, tag = events_to_collect
  *             sax_context._setEventFilter(events, tag)             # <<<<<<<<<<<<<<
  *         return sax_context
  * 
  */
-    __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_sax_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_setEventFilter(__pyx_v_sax_context, __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_sax_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_setEventFilter(__pyx_v_sax_context, __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "src/lxml/parser.pxi":850
+    /* "src/lxml/parser.pxi":861
  *             # nothing special to configure
  *             return _ParserContext()
  *         if events_to_collect:             # <<<<<<<<<<<<<<
@@ -106981,7 +107160,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
  */
   }
 
-  /* "src/lxml/parser.pxi":853
+  /* "src/lxml/parser.pxi":864
  *             events, tag = events_to_collect
  *             sax_context._setEventFilter(events, tag)
  *         return sax_context             # <<<<<<<<<<<<<<
@@ -106993,7 +107172,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_sax_context);
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":840
+  /* "src/lxml/parser.pxi":851
  *         return self._push_parser_context
  * 
  *     cdef _ParserContext _createContext(self, target, events_to_collect):             # <<<<<<<<<<<<<<
@@ -107017,7 +107196,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":856
+/* "src/lxml/parser.pxi":867
  * 
  *     @cython.final
  *     cdef int _configureSaxContext(self, xmlparser.xmlParserCtxt* pctxt) except -1:             # <<<<<<<<<<<<<<
@@ -107031,7 +107210,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_configureSaxContext", 0);
 
-  /* "src/lxml/parser.pxi":857
+  /* "src/lxml/parser.pxi":868
  *     @cython.final
  *     cdef int _configureSaxContext(self, xmlparser.xmlParserCtxt* pctxt) except -1:
  *         if self._remove_comments:             # <<<<<<<<<<<<<<
@@ -107041,7 +107220,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
   __pyx_t_1 = (__pyx_v_self->_remove_comments != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":858
+    /* "src/lxml/parser.pxi":869
  *     cdef int _configureSaxContext(self, xmlparser.xmlParserCtxt* pctxt) except -1:
  *         if self._remove_comments:
  *             pctxt.sax.comment = NULL             # <<<<<<<<<<<<<<
@@ -107050,7 +107229,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
  */
     __pyx_v_pctxt->sax->comment = NULL;
 
-    /* "src/lxml/parser.pxi":857
+    /* "src/lxml/parser.pxi":868
  *     @cython.final
  *     cdef int _configureSaxContext(self, xmlparser.xmlParserCtxt* pctxt) except -1:
  *         if self._remove_comments:             # <<<<<<<<<<<<<<
@@ -107059,7 +107238,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
  */
   }
 
-  /* "src/lxml/parser.pxi":859
+  /* "src/lxml/parser.pxi":870
  *         if self._remove_comments:
  *             pctxt.sax.comment = NULL
  *         if self._remove_pis:             # <<<<<<<<<<<<<<
@@ -107069,7 +107248,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
   __pyx_t_1 = (__pyx_v_self->_remove_pis != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":860
+    /* "src/lxml/parser.pxi":871
  *             pctxt.sax.comment = NULL
  *         if self._remove_pis:
  *             pctxt.sax.processingInstruction = NULL             # <<<<<<<<<<<<<<
@@ -107078,7 +107257,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
  */
     __pyx_v_pctxt->sax->processingInstruction = NULL;
 
-    /* "src/lxml/parser.pxi":859
+    /* "src/lxml/parser.pxi":870
  *         if self._remove_comments:
  *             pctxt.sax.comment = NULL
  *         if self._remove_pis:             # <<<<<<<<<<<<<<
@@ -107087,7 +107266,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
  */
   }
 
-  /* "src/lxml/parser.pxi":861
+  /* "src/lxml/parser.pxi":872
  *         if self._remove_pis:
  *             pctxt.sax.processingInstruction = NULL
  *         if self._strip_cdata:             # <<<<<<<<<<<<<<
@@ -107097,7 +107276,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
   __pyx_t_1 = (__pyx_v_self->_strip_cdata != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":863
+    /* "src/lxml/parser.pxi":874
  *         if self._strip_cdata:
  *             # hard switch-off for CDATA nodes => makes them plain text
  *             pctxt.sax.cdataBlock = NULL             # <<<<<<<<<<<<<<
@@ -107106,7 +107285,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
  */
     __pyx_v_pctxt->sax->cdataBlock = NULL;
 
-    /* "src/lxml/parser.pxi":861
+    /* "src/lxml/parser.pxi":872
  *         if self._remove_pis:
  *             pctxt.sax.processingInstruction = NULL
  *         if self._strip_cdata:             # <<<<<<<<<<<<<<
@@ -107115,7 +107294,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
  */
   }
 
-  /* "src/lxml/parser.pxi":856
+  /* "src/lxml/parser.pxi":867
  * 
  *     @cython.final
  *     cdef int _configureSaxContext(self, xmlparser.xmlParserCtxt* pctxt) except -1:             # <<<<<<<<<<<<<<
@@ -107129,7 +107308,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":865
+/* "src/lxml/parser.pxi":876
  *             pctxt.sax.cdataBlock = NULL
  * 
  *     cdef int _registerHtmlErrorHandler(self, xmlparser.xmlParserCtxt* c_ctxt) except -1:             # <<<<<<<<<<<<<<
@@ -107149,7 +107328,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_registerHtmlErrorHandler", 0);
 
-  /* "src/lxml/parser.pxi":866
+  /* "src/lxml/parser.pxi":877
  * 
  *     cdef int _registerHtmlErrorHandler(self, xmlparser.xmlParserCtxt* c_ctxt) except -1:
  *         cdef xmlparser.xmlSAXHandler* sax = c_ctxt.sax             # <<<<<<<<<<<<<<
@@ -107159,7 +107338,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
   __pyx_t_1 = __pyx_v_c_ctxt->sax;
   __pyx_v_sax = __pyx_t_1;
 
-  /* "src/lxml/parser.pxi":867
+  /* "src/lxml/parser.pxi":878
  *     cdef int _registerHtmlErrorHandler(self, xmlparser.xmlParserCtxt* c_ctxt) except -1:
  *         cdef xmlparser.xmlSAXHandler* sax = c_ctxt.sax
  *         if sax is not NULL and sax.initialized and sax.initialized != xmlparser.XML_SAX2_MAGIC:             # <<<<<<<<<<<<<<
@@ -107183,7 +107362,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":869
+    /* "src/lxml/parser.pxi":880
  *         if sax is not NULL and sax.initialized and sax.initialized != xmlparser.XML_SAX2_MAGIC:
  *             # need to extend SAX1 context to SAX2 to get proper error reports
  *             if <xmlparser.xmlSAXHandlerV1*>sax is &htmlparser.htmlDefaultSAXHandler:             # <<<<<<<<<<<<<<
@@ -107193,7 +107372,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
     __pyx_t_2 = ((((xmlSAXHandlerV1 *)__pyx_v_sax) == (&htmlDefaultSAXHandler)) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":870
+      /* "src/lxml/parser.pxi":881
  *             # need to extend SAX1 context to SAX2 to get proper error reports
  *             if <xmlparser.xmlSAXHandlerV1*>sax is &htmlparser.htmlDefaultSAXHandler:
  *                 sax = <xmlparser.xmlSAXHandler*> stdlib.malloc(sizeof(xmlparser.xmlSAXHandler))             # <<<<<<<<<<<<<<
@@ -107202,7 +107381,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
  */
       __pyx_v_sax = ((xmlSAXHandler *)malloc((sizeof(xmlSAXHandler))));
 
-      /* "src/lxml/parser.pxi":871
+      /* "src/lxml/parser.pxi":882
  *             if <xmlparser.xmlSAXHandlerV1*>sax is &htmlparser.htmlDefaultSAXHandler:
  *                 sax = <xmlparser.xmlSAXHandler*> stdlib.malloc(sizeof(xmlparser.xmlSAXHandler))
  *                 if sax is NULL:             # <<<<<<<<<<<<<<
@@ -107212,16 +107391,16 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
       __pyx_t_2 = ((__pyx_v_sax == NULL) != 0);
       if (__pyx_t_2) {
 
-        /* "src/lxml/parser.pxi":872
+        /* "src/lxml/parser.pxi":883
  *                 sax = <xmlparser.xmlSAXHandler*> stdlib.malloc(sizeof(xmlparser.xmlSAXHandler))
  *                 if sax is NULL:
  *                     raise MemoryError()             # <<<<<<<<<<<<<<
  *                 cstring_h.memcpy(sax, &htmlparser.htmlDefaultSAXHandler,
  *                                  sizeof(htmlparser.htmlDefaultSAXHandler))
  */
-        PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-        /* "src/lxml/parser.pxi":871
+        /* "src/lxml/parser.pxi":882
  *             if <xmlparser.xmlSAXHandlerV1*>sax is &htmlparser.htmlDefaultSAXHandler:
  *                 sax = <xmlparser.xmlSAXHandler*> stdlib.malloc(sizeof(xmlparser.xmlSAXHandler))
  *                 if sax is NULL:             # <<<<<<<<<<<<<<
@@ -107230,7 +107409,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
  */
       }
 
-      /* "src/lxml/parser.pxi":873
+      /* "src/lxml/parser.pxi":884
  *                 if sax is NULL:
  *                     raise MemoryError()
  *                 cstring_h.memcpy(sax, &htmlparser.htmlDefaultSAXHandler,             # <<<<<<<<<<<<<<
@@ -107239,7 +107418,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
  */
       memcpy(__pyx_v_sax, (&htmlDefaultSAXHandler), (sizeof(htmlDefaultSAXHandler)));
 
-      /* "src/lxml/parser.pxi":875
+      /* "src/lxml/parser.pxi":886
  *                 cstring_h.memcpy(sax, &htmlparser.htmlDefaultSAXHandler,
  *                                  sizeof(htmlparser.htmlDefaultSAXHandler))
  *                 c_ctxt.sax = sax             # <<<<<<<<<<<<<<
@@ -107248,7 +107427,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
  */
       __pyx_v_c_ctxt->sax = __pyx_v_sax;
 
-      /* "src/lxml/parser.pxi":869
+      /* "src/lxml/parser.pxi":880
  *         if sax is not NULL and sax.initialized and sax.initialized != xmlparser.XML_SAX2_MAGIC:
  *             # need to extend SAX1 context to SAX2 to get proper error reports
  *             if <xmlparser.xmlSAXHandlerV1*>sax is &htmlparser.htmlDefaultSAXHandler:             # <<<<<<<<<<<<<<
@@ -107257,7 +107436,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
  */
     }
 
-    /* "src/lxml/parser.pxi":876
+    /* "src/lxml/parser.pxi":887
  *                                  sizeof(htmlparser.htmlDefaultSAXHandler))
  *                 c_ctxt.sax = sax
  *             sax.initialized = xmlparser.XML_SAX2_MAGIC             # <<<<<<<<<<<<<<
@@ -107266,7 +107445,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
  */
     __pyx_v_sax->initialized = XML_SAX2_MAGIC;
 
-    /* "src/lxml/parser.pxi":877
+    /* "src/lxml/parser.pxi":888
  *                 c_ctxt.sax = sax
  *             sax.initialized = xmlparser.XML_SAX2_MAGIC
  *             sax.serror = _receiveParserError             # <<<<<<<<<<<<<<
@@ -107275,7 +107454,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
  */
     __pyx_v_sax->serror = __pyx_f_4lxml_5etree__receiveParserError;
 
-    /* "src/lxml/parser.pxi":878
+    /* "src/lxml/parser.pxi":889
  *             sax.initialized = xmlparser.XML_SAX2_MAGIC
  *             sax.serror = _receiveParserError
  *             sax.startElementNs = NULL             # <<<<<<<<<<<<<<
@@ -107284,7 +107463,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
  */
     __pyx_v_sax->startElementNs = NULL;
 
-    /* "src/lxml/parser.pxi":879
+    /* "src/lxml/parser.pxi":890
  *             sax.serror = _receiveParserError
  *             sax.startElementNs = NULL
  *             sax.endElementNs = NULL             # <<<<<<<<<<<<<<
@@ -107293,7 +107472,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
  */
     __pyx_v_sax->endElementNs = NULL;
 
-    /* "src/lxml/parser.pxi":880
+    /* "src/lxml/parser.pxi":891
  *             sax.startElementNs = NULL
  *             sax.endElementNs = NULL
  *             sax._private = NULL             # <<<<<<<<<<<<<<
@@ -107302,7 +107481,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
  */
     __pyx_v_sax->_private = NULL;
 
-    /* "src/lxml/parser.pxi":867
+    /* "src/lxml/parser.pxi":878
  *     cdef int _registerHtmlErrorHandler(self, xmlparser.xmlParserCtxt* c_ctxt) except -1:
  *         cdef xmlparser.xmlSAXHandler* sax = c_ctxt.sax
  *         if sax is not NULL and sax.initialized and sax.initialized != xmlparser.XML_SAX2_MAGIC:             # <<<<<<<<<<<<<<
@@ -107311,7 +107490,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
  */
   }
 
-  /* "src/lxml/parser.pxi":881
+  /* "src/lxml/parser.pxi":892
  *             sax.endElementNs = NULL
  *             sax._private = NULL
  *         return 0             # <<<<<<<<<<<<<<
@@ -107321,7 +107500,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":865
+  /* "src/lxml/parser.pxi":876
  *             pctxt.sax.cdataBlock = NULL
  * 
  *     cdef int _registerHtmlErrorHandler(self, xmlparser.xmlParserCtxt* c_ctxt) except -1:             # <<<<<<<<<<<<<<
@@ -107338,7 +107517,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":883
+/* "src/lxml/parser.pxi":894
  *         return 0
  * 
  *     cdef xmlparser.xmlParserCtxt* _newParserCtxt(self) except NULL:             # <<<<<<<<<<<<<<
@@ -107357,7 +107536,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_newParserCtxt", 0);
 
-  /* "src/lxml/parser.pxi":885
+  /* "src/lxml/parser.pxi":896
  *     cdef xmlparser.xmlParserCtxt* _newParserCtxt(self) except NULL:
  *         cdef xmlparser.xmlParserCtxt* c_ctxt
  *         if self._for_html:             # <<<<<<<<<<<<<<
@@ -107367,7 +107546,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
   __pyx_t_1 = (__pyx_v_self->_for_html != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":886
+    /* "src/lxml/parser.pxi":897
  *         cdef xmlparser.xmlParserCtxt* c_ctxt
  *         if self._for_html:
  *             c_ctxt = htmlparser.htmlCreateMemoryParserCtxt('dummy', 5)             # <<<<<<<<<<<<<<
@@ -107376,7 +107555,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
  */
     __pyx_v_c_ctxt = htmlCreateMemoryParserCtxt(__pyx_k_dummy, 5);
 
-    /* "src/lxml/parser.pxi":887
+    /* "src/lxml/parser.pxi":898
  *         if self._for_html:
  *             c_ctxt = htmlparser.htmlCreateMemoryParserCtxt('dummy', 5)
  *             if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -107386,16 +107565,16 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
     __pyx_t_1 = ((__pyx_v_c_ctxt != NULL) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":888
+      /* "src/lxml/parser.pxi":899
  *             c_ctxt = htmlparser.htmlCreateMemoryParserCtxt('dummy', 5)
  *             if c_ctxt is not NULL:
  *                 self._registerHtmlErrorHandler(c_ctxt)             # <<<<<<<<<<<<<<
  *         else:
  *             c_ctxt = xmlparser.xmlNewParserCtxt()
  */
-      __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_registerHtmlErrorHandler(__pyx_v_self, __pyx_v_c_ctxt); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_registerHtmlErrorHandler(__pyx_v_self, __pyx_v_c_ctxt); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/parser.pxi":887
+      /* "src/lxml/parser.pxi":898
  *         if self._for_html:
  *             c_ctxt = htmlparser.htmlCreateMemoryParserCtxt('dummy', 5)
  *             if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -107404,7 +107583,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
  */
     }
 
-    /* "src/lxml/parser.pxi":885
+    /* "src/lxml/parser.pxi":896
  *     cdef xmlparser.xmlParserCtxt* _newParserCtxt(self) except NULL:
  *         cdef xmlparser.xmlParserCtxt* c_ctxt
  *         if self._for_html:             # <<<<<<<<<<<<<<
@@ -107414,7 +107593,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":890
+  /* "src/lxml/parser.pxi":901
  *                 self._registerHtmlErrorHandler(c_ctxt)
  *         else:
  *             c_ctxt = xmlparser.xmlNewParserCtxt()             # <<<<<<<<<<<<<<
@@ -107426,7 +107605,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":891
+  /* "src/lxml/parser.pxi":902
  *         else:
  *             c_ctxt = xmlparser.xmlNewParserCtxt()
  *         if c_ctxt is NULL:             # <<<<<<<<<<<<<<
@@ -107436,16 +107615,16 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
   __pyx_t_1 = ((__pyx_v_c_ctxt == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":892
+    /* "src/lxml/parser.pxi":903
  *             c_ctxt = xmlparser.xmlNewParserCtxt()
  *         if c_ctxt is NULL:
  *             raise MemoryError             # <<<<<<<<<<<<<<
  *         c_ctxt.sax.startDocument = _initSaxDocument
  *         return c_ctxt
  */
-    PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":891
+    /* "src/lxml/parser.pxi":902
  *         else:
  *             c_ctxt = xmlparser.xmlNewParserCtxt()
  *         if c_ctxt is NULL:             # <<<<<<<<<<<<<<
@@ -107454,7 +107633,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
  */
   }
 
-  /* "src/lxml/parser.pxi":893
+  /* "src/lxml/parser.pxi":904
  *         if c_ctxt is NULL:
  *             raise MemoryError
  *         c_ctxt.sax.startDocument = _initSaxDocument             # <<<<<<<<<<<<<<
@@ -107463,7 +107642,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
  */
   __pyx_v_c_ctxt->sax->startDocument = __pyx_f_4lxml_5etree__initSaxDocument;
 
-  /* "src/lxml/parser.pxi":894
+  /* "src/lxml/parser.pxi":905
  *             raise MemoryError
  *         c_ctxt.sax.startDocument = _initSaxDocument
  *         return c_ctxt             # <<<<<<<<<<<<<<
@@ -107473,7 +107652,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
   __pyx_r = __pyx_v_c_ctxt;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":883
+  /* "src/lxml/parser.pxi":894
  *         return 0
  * 
  *     cdef xmlparser.xmlParserCtxt* _newParserCtxt(self) except NULL:             # <<<<<<<<<<<<<<
@@ -107490,7 +107669,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":896
+/* "src/lxml/parser.pxi":907
  *         return c_ctxt
  * 
  *     cdef xmlparser.xmlParserCtxt* _newPushParserCtxt(self) except NULL:             # <<<<<<<<<<<<<<
@@ -107512,7 +107691,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_newPushParserCtxt", 0);
 
-  /* "src/lxml/parser.pxi":898
+  /* "src/lxml/parser.pxi":909
  *     cdef xmlparser.xmlParserCtxt* _newPushParserCtxt(self) except NULL:
  *         cdef xmlparser.xmlParserCtxt* c_ctxt
  *         cdef char* c_filename = _cstr(self._filename) if self._filename is not None else NULL             # <<<<<<<<<<<<<<
@@ -107530,7 +107709,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
   }
   __pyx_v_c_filename = __pyx_t_1;
 
-  /* "src/lxml/parser.pxi":899
+  /* "src/lxml/parser.pxi":910
  *         cdef xmlparser.xmlParserCtxt* c_ctxt
  *         cdef char* c_filename = _cstr(self._filename) if self._filename is not None else NULL
  *         if self._for_html:             # <<<<<<<<<<<<<<
@@ -107540,7 +107719,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
   __pyx_t_2 = (__pyx_v_self->_for_html != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":900
+    /* "src/lxml/parser.pxi":911
  *         cdef char* c_filename = _cstr(self._filename) if self._filename is not None else NULL
  *         if self._for_html:
  *             c_ctxt = htmlparser.htmlCreatePushParserCtxt(             # <<<<<<<<<<<<<<
@@ -107549,7 +107728,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
  */
     __pyx_v_c_ctxt = htmlCreatePushParserCtxt(NULL, NULL, NULL, 0, __pyx_v_c_filename, XML_CHAR_ENCODING_NONE);
 
-    /* "src/lxml/parser.pxi":902
+    /* "src/lxml/parser.pxi":913
  *             c_ctxt = htmlparser.htmlCreatePushParserCtxt(
  *                 NULL, NULL, NULL, 0, c_filename, tree.XML_CHAR_ENCODING_NONE)
  *             if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -107559,16 +107738,16 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
     __pyx_t_2 = ((__pyx_v_c_ctxt != NULL) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":903
+      /* "src/lxml/parser.pxi":914
  *                 NULL, NULL, NULL, 0, c_filename, tree.XML_CHAR_ENCODING_NONE)
  *             if c_ctxt is not NULL:
  *                 self._registerHtmlErrorHandler(c_ctxt)             # <<<<<<<<<<<<<<
  *                 htmlparser.htmlCtxtUseOptions(c_ctxt, self._parse_options)
  *         else:
  */
-      __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_registerHtmlErrorHandler(__pyx_v_self, __pyx_v_c_ctxt); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_registerHtmlErrorHandler(__pyx_v_self, __pyx_v_c_ctxt); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/parser.pxi":904
+      /* "src/lxml/parser.pxi":915
  *             if c_ctxt is not NULL:
  *                 self._registerHtmlErrorHandler(c_ctxt)
  *                 htmlparser.htmlCtxtUseOptions(c_ctxt, self._parse_options)             # <<<<<<<<<<<<<<
@@ -107577,7 +107756,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
  */
       htmlCtxtUseOptions(__pyx_v_c_ctxt, __pyx_v_self->_parse_options);
 
-      /* "src/lxml/parser.pxi":902
+      /* "src/lxml/parser.pxi":913
  *             c_ctxt = htmlparser.htmlCreatePushParserCtxt(
  *                 NULL, NULL, NULL, 0, c_filename, tree.XML_CHAR_ENCODING_NONE)
  *             if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -107586,7 +107765,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
  */
     }
 
-    /* "src/lxml/parser.pxi":899
+    /* "src/lxml/parser.pxi":910
  *         cdef xmlparser.xmlParserCtxt* c_ctxt
  *         cdef char* c_filename = _cstr(self._filename) if self._filename is not None else NULL
  *         if self._for_html:             # <<<<<<<<<<<<<<
@@ -107596,7 +107775,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":906
+  /* "src/lxml/parser.pxi":917
  *                 htmlparser.htmlCtxtUseOptions(c_ctxt, self._parse_options)
  *         else:
  *             c_ctxt = xmlparser.xmlCreatePushParserCtxt(             # <<<<<<<<<<<<<<
@@ -107605,7 +107784,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
  */
   /*else*/ {
 
-    /* "src/lxml/parser.pxi":907
+    /* "src/lxml/parser.pxi":918
  *         else:
  *             c_ctxt = xmlparser.xmlCreatePushParserCtxt(
  *                 NULL, NULL, NULL, 0, c_filename)             # <<<<<<<<<<<<<<
@@ -107614,7 +107793,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
  */
     __pyx_v_c_ctxt = xmlCreatePushParserCtxt(NULL, NULL, NULL, 0, __pyx_v_c_filename);
 
-    /* "src/lxml/parser.pxi":908
+    /* "src/lxml/parser.pxi":919
  *             c_ctxt = xmlparser.xmlCreatePushParserCtxt(
  *                 NULL, NULL, NULL, 0, c_filename)
  *             if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -107624,7 +107803,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
     __pyx_t_2 = ((__pyx_v_c_ctxt != NULL) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":909
+      /* "src/lxml/parser.pxi":920
  *                 NULL, NULL, NULL, 0, c_filename)
  *             if c_ctxt is not NULL:
  *                 xmlparser.xmlCtxtUseOptions(c_ctxt, self._parse_options)             # <<<<<<<<<<<<<<
@@ -107633,7 +107812,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
  */
       xmlCtxtUseOptions(__pyx_v_c_ctxt, __pyx_v_self->_parse_options);
 
-      /* "src/lxml/parser.pxi":908
+      /* "src/lxml/parser.pxi":919
  *             c_ctxt = xmlparser.xmlCreatePushParserCtxt(
  *                 NULL, NULL, NULL, 0, c_filename)
  *             if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -107644,7 +107823,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":910
+  /* "src/lxml/parser.pxi":921
  *             if c_ctxt is not NULL:
  *                 xmlparser.xmlCtxtUseOptions(c_ctxt, self._parse_options)
  *         if c_ctxt is NULL:             # <<<<<<<<<<<<<<
@@ -107654,16 +107833,16 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
   __pyx_t_2 = ((__pyx_v_c_ctxt == NULL) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":911
+    /* "src/lxml/parser.pxi":922
  *                 xmlparser.xmlCtxtUseOptions(c_ctxt, self._parse_options)
  *         if c_ctxt is NULL:
  *             raise MemoryError()             # <<<<<<<<<<<<<<
  *         c_ctxt.sax.startDocument = _initSaxDocument
  *         return c_ctxt
  */
-    PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":910
+    /* "src/lxml/parser.pxi":921
  *             if c_ctxt is not NULL:
  *                 xmlparser.xmlCtxtUseOptions(c_ctxt, self._parse_options)
  *         if c_ctxt is NULL:             # <<<<<<<<<<<<<<
@@ -107672,7 +107851,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
  */
   }
 
-  /* "src/lxml/parser.pxi":912
+  /* "src/lxml/parser.pxi":923
  *         if c_ctxt is NULL:
  *             raise MemoryError()
  *         c_ctxt.sax.startDocument = _initSaxDocument             # <<<<<<<<<<<<<<
@@ -107681,7 +107860,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
  */
   __pyx_v_c_ctxt->sax->startDocument = __pyx_f_4lxml_5etree__initSaxDocument;
 
-  /* "src/lxml/parser.pxi":913
+  /* "src/lxml/parser.pxi":924
  *             raise MemoryError()
  *         c_ctxt.sax.startDocument = _initSaxDocument
  *         return c_ctxt             # <<<<<<<<<<<<<<
@@ -107691,7 +107870,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
   __pyx_r = __pyx_v_c_ctxt;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":896
+  /* "src/lxml/parser.pxi":907
  *         return c_ctxt
  * 
  *     cdef xmlparser.xmlParserCtxt* _newPushParserCtxt(self) except NULL:             # <<<<<<<<<<<<<<
@@ -107709,7 +107888,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":918
+/* "src/lxml/parser.pxi":929
  *         u"""The error log of the last parser run.
  *         """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -107740,19 +107919,19 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9error_log___get__(struct _
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "src/lxml/parser.pxi":920
+  /* "src/lxml/parser.pxi":931
  *         def __get__(self):
  *             cdef _ParserContext context
  *             context = self._getParserContext()             # <<<<<<<<<<<<<<
  *             return context._error_log.copy()
  * 
  */
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":921
+  /* "src/lxml/parser.pxi":932
  *             cdef _ParserContext context
  *             context = self._getParserContext()
  *             return context._error_log.copy()             # <<<<<<<<<<<<<<
@@ -107760,13 +107939,13 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9error_log___get__(struct _
  *     property resolvers:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_context->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_context->_error_log), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_context->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_context->_error_log), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":918
+  /* "src/lxml/parser.pxi":929
  *         u"""The error log of the last parser run.
  *         """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -107786,7 +107965,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9error_log___get__(struct _
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":925
+/* "src/lxml/parser.pxi":936
  *     property resolvers:
  *         u"The custom resolver registry of this parser."
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -107812,7 +107991,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9resolvers___get__(struct _
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "src/lxml/parser.pxi":926
+  /* "src/lxml/parser.pxi":937
  *         u"The custom resolver registry of this parser."
  *         def __get__(self):
  *             return self._resolvers             # <<<<<<<<<<<<<<
@@ -107824,7 +108003,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9resolvers___get__(struct _
   __pyx_r = ((PyObject *)__pyx_v_self->_resolvers);
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":925
+  /* "src/lxml/parser.pxi":936
  *     property resolvers:
  *         u"The custom resolver registry of this parser."
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -107839,7 +108018,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9resolvers___get__(struct _
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":930
+/* "src/lxml/parser.pxi":941
  *     property version:
  *         u"The version of the underlying XML parser."
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -107870,7 +108049,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_7version___get__(CYTHON_UNU
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "src/lxml/parser.pxi":931
+  /* "src/lxml/parser.pxi":942
  *         u"The version of the underlying XML parser."
  *         def __get__(self):
  *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION             # <<<<<<<<<<<<<<
@@ -107878,16 +108057,16 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_7version___get__(CYTHON_UNU
  *     def setElementClassLookup(self, ElementClassLookup lookup = None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_LIBXML_VERSION); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_LIBXML_VERSION); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_libxml2_d_d_d, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_libxml2_d_d_d, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":930
+  /* "src/lxml/parser.pxi":941
  *     property version:
  *         u"The version of the underlying XML parser."
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -107907,7 +108086,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_7version___get__(CYTHON_UNU
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":933
+/* "src/lxml/parser.pxi":944
  *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION
  * 
  *     def setElementClassLookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
@@ -107947,7 +108126,7 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_3setElementClassLookup(PyOb
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setElementClassLookup") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setElementClassLookup") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -107960,13 +108139,13 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_3setElementClassLookup(PyOb
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setElementClassLookup", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("setElementClassLookup", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._BaseParser.setElementClassLookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lookup), __pyx_ptype_4lxml_5etree_ElementClassLookup, 1, "lookup", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lookup), __pyx_ptype_4lxml_5etree_ElementClassLookup, 1, "lookup", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_pf_4lxml_5etree_11_BaseParser_2setElementClassLookup(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_lookup);
 
   /* function exit code */
@@ -107990,14 +108169,14 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_2setElementClassLookup(stru
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("setElementClassLookup", 0);
 
-  /* "src/lxml/parser.pxi":935
+  /* "src/lxml/parser.pxi":946
  *     def setElementClassLookup(self, ElementClassLookup lookup = None):
  *         u":deprecated: use ``parser.set_element_class_lookup(lookup)`` instead."
  *         self.set_element_class_lookup(lookup)             # <<<<<<<<<<<<<<
  * 
  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -108010,23 +108189,23 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_2setElementClassLookup(stru
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_lookup)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_lookup)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(((PyObject *)__pyx_v_lookup));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_lookup));
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_lookup));
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":933
+  /* "src/lxml/parser.pxi":944
  *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION
  * 
  *     def setElementClassLookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
@@ -108050,7 +108229,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_2setElementClassLookup(stru
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":937
+/* "src/lxml/parser.pxi":948
  *         self.set_element_class_lookup(lookup)
  * 
  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
@@ -108090,7 +108269,7 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_5set_element_class_lookup(P
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_element_class_lookup") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_element_class_lookup") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -108103,13 +108282,13 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_5set_element_class_lookup(P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("set_element_class_lookup", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("set_element_class_lookup", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._BaseParser.set_element_class_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lookup), __pyx_ptype_4lxml_5etree_ElementClassLookup, 1, "lookup", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lookup), __pyx_ptype_4lxml_5etree_ElementClassLookup, 1, "lookup", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_pf_4lxml_5etree_11_BaseParser_4set_element_class_lookup(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_lookup);
 
   /* function exit code */
@@ -108126,7 +108305,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_4set_element_class_lookup(s
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("set_element_class_lookup", 0);
 
-  /* "src/lxml/parser.pxi":944
+  /* "src/lxml/parser.pxi":955
  *         Reset it by passing None or nothing.
  *         """
  *         self._class_lookup = lookup             # <<<<<<<<<<<<<<
@@ -108139,7 +108318,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_4set_element_class_lookup(s
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_class_lookup));
   __pyx_v_self->_class_lookup = __pyx_v_lookup;
 
-  /* "src/lxml/parser.pxi":937
+  /* "src/lxml/parser.pxi":948
  *         self.set_element_class_lookup(lookup)
  * 
  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
@@ -108154,7 +108333,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_4set_element_class_lookup(s
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":946
+/* "src/lxml/parser.pxi":957
  *         self._class_lookup = lookup
  * 
  *     cdef _BaseParser _copy(self):             # <<<<<<<<<<<<<<
@@ -108176,14 +108355,14 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_copy", 0);
 
-  /* "src/lxml/parser.pxi":949
+  /* "src/lxml/parser.pxi":960
  *         u"Create a new parser with the same configuration."
  *         cdef _BaseParser parser
  *         parser = self.__class__()             # <<<<<<<<<<<<<<
  *         parser._parse_options = self._parse_options
  *         parser._for_html = self._for_html
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -108196,18 +108375,18 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__BaseParser))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__BaseParser))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":950
+  /* "src/lxml/parser.pxi":961
  *         cdef _BaseParser parser
  *         parser = self.__class__()
  *         parser._parse_options = self._parse_options             # <<<<<<<<<<<<<<
@@ -108217,7 +108396,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_t_4 = __pyx_v_self->_parse_options;
   __pyx_v_parser->_parse_options = __pyx_t_4;
 
-  /* "src/lxml/parser.pxi":951
+  /* "src/lxml/parser.pxi":962
  *         parser = self.__class__()
  *         parser._parse_options = self._parse_options
  *         parser._for_html = self._for_html             # <<<<<<<<<<<<<<
@@ -108227,7 +108406,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_t_5 = __pyx_v_self->_for_html;
   __pyx_v_parser->_for_html = __pyx_t_5;
 
-  /* "src/lxml/parser.pxi":952
+  /* "src/lxml/parser.pxi":963
  *         parser._parse_options = self._parse_options
  *         parser._for_html = self._for_html
  *         parser._remove_comments = self._remove_comments             # <<<<<<<<<<<<<<
@@ -108237,7 +108416,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_t_5 = __pyx_v_self->_remove_comments;
   __pyx_v_parser->_remove_comments = __pyx_t_5;
 
-  /* "src/lxml/parser.pxi":953
+  /* "src/lxml/parser.pxi":964
  *         parser._for_html = self._for_html
  *         parser._remove_comments = self._remove_comments
  *         parser._remove_pis = self._remove_pis             # <<<<<<<<<<<<<<
@@ -108247,7 +108426,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_t_5 = __pyx_v_self->_remove_pis;
   __pyx_v_parser->_remove_pis = __pyx_t_5;
 
-  /* "src/lxml/parser.pxi":954
+  /* "src/lxml/parser.pxi":965
  *         parser._remove_comments = self._remove_comments
  *         parser._remove_pis = self._remove_pis
  *         parser._strip_cdata = self._strip_cdata             # <<<<<<<<<<<<<<
@@ -108257,7 +108436,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_t_5 = __pyx_v_self->_strip_cdata;
   __pyx_v_parser->_strip_cdata = __pyx_t_5;
 
-  /* "src/lxml/parser.pxi":955
+  /* "src/lxml/parser.pxi":966
  *         parser._remove_pis = self._remove_pis
  *         parser._strip_cdata = self._strip_cdata
  *         parser._filename = self._filename             # <<<<<<<<<<<<<<
@@ -108272,7 +108451,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_v_parser->_filename = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":956
+  /* "src/lxml/parser.pxi":967
  *         parser._strip_cdata = self._strip_cdata
  *         parser._filename = self._filename
  *         parser._resolvers = self._resolvers             # <<<<<<<<<<<<<<
@@ -108287,7 +108466,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_v_parser->_resolvers = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":957
+  /* "src/lxml/parser.pxi":968
  *         parser._filename = self._filename
  *         parser._resolvers = self._resolvers
  *         parser.target = self.target             # <<<<<<<<<<<<<<
@@ -108302,7 +108481,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_v_parser->target = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":958
+  /* "src/lxml/parser.pxi":969
  *         parser._resolvers = self._resolvers
  *         parser.target = self.target
  *         parser._class_lookup  = self._class_lookup             # <<<<<<<<<<<<<<
@@ -108317,7 +108496,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_v_parser->_class_lookup = ((struct LxmlElementClassLookup *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":959
+  /* "src/lxml/parser.pxi":970
  *         parser.target = self.target
  *         parser._class_lookup  = self._class_lookup
  *         parser._default_encoding = self._default_encoding             # <<<<<<<<<<<<<<
@@ -108332,7 +108511,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_v_parser->_default_encoding = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":960
+  /* "src/lxml/parser.pxi":971
  *         parser._class_lookup  = self._class_lookup
  *         parser._default_encoding = self._default_encoding
  *         parser._schema = self._schema             # <<<<<<<<<<<<<<
@@ -108347,7 +108526,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_v_parser->_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":961
+  /* "src/lxml/parser.pxi":972
  *         parser._default_encoding = self._default_encoding
  *         parser._schema = self._schema
  *         parser._events_to_collect = self._events_to_collect             # <<<<<<<<<<<<<<
@@ -108362,7 +108541,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_v_parser->_events_to_collect = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":962
+  /* "src/lxml/parser.pxi":973
  *         parser._schema = self._schema
  *         parser._events_to_collect = self._events_to_collect
  *         return parser             # <<<<<<<<<<<<<<
@@ -108374,7 +108553,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_r = __pyx_v_parser;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":946
+  /* "src/lxml/parser.pxi":957
  *         self._class_lookup = lookup
  * 
  *     cdef _BaseParser _copy(self):             # <<<<<<<<<<<<<<
@@ -108396,7 +108575,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":964
+/* "src/lxml/parser.pxi":975
  *         return parser
  * 
  *     def copy(self):             # <<<<<<<<<<<<<<
@@ -108427,7 +108606,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_6copy(struct __pyx_obj_4lxm
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("copy", 0);
 
-  /* "src/lxml/parser.pxi":969
+  /* "src/lxml/parser.pxi":980
  *         Create a new parser with the same configuration.
  *         """
  *         return self._copy()             # <<<<<<<<<<<<<<
@@ -108435,13 +108614,13 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_6copy(struct __pyx_obj_4lxm
  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_copy(__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_copy(__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":964
+  /* "src/lxml/parser.pxi":975
  *         return parser
  * 
  *     def copy(self):             # <<<<<<<<<<<<<<
@@ -108460,7 +108639,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_6copy(struct __pyx_obj_4lxm
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":971
+/* "src/lxml/parser.pxi":982
  *         return self._copy()
  * 
  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
@@ -108516,7 +108695,7 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_9makeelement(PyObject *__py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "makeelement") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "makeelement") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -108533,7 +108712,7 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_9makeelement(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("makeelement", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("makeelement", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v__extra); __pyx_v__extra = 0;
   __Pyx_AddTraceback("lxml.etree._BaseParser.makeelement", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -108557,7 +108736,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_8makeelement(struct __pyx_o
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("makeelement", 0);
 
-  /* "src/lxml/parser.pxi":976
+  /* "src/lxml/parser.pxi":987
  *         Creates a new element associated with this parser.
  *         """
  *         return _makeElement(_tag, NULL, None, self, None, None,             # <<<<<<<<<<<<<<
@@ -108566,20 +108745,20 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_8makeelement(struct __pyx_o
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "src/lxml/parser.pxi":977
+  /* "src/lxml/parser.pxi":988
  *         """
  *         return _makeElement(_tag, NULL, None, self, None, None,
  *                             attrib, nsmap, _extra)             # <<<<<<<<<<<<<<
  * 
  *     # internal parser methods
  */
-  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v__tag, NULL, ((struct LxmlDocument *)Py_None), __pyx_v_self, Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, __pyx_v__extra)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v__tag, NULL, ((struct LxmlDocument *)Py_None), __pyx_v_self, Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, __pyx_v__extra)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":971
+  /* "src/lxml/parser.pxi":982
  *         return self._copy()
  * 
  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
@@ -108598,7 +108777,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_8makeelement(struct __pyx_o
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":981
+/* "src/lxml/parser.pxi":992
  *     # internal parser methods
  * 
  *     cdef xmlDoc* _parseUnicodeDoc(self, utext, char* c_filename) except NULL:             # <<<<<<<<<<<<<<
@@ -108640,7 +108819,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_parseUnicodeDoc", 0);
 
-  /* "src/lxml/parser.pxi":990
+  /* "src/lxml/parser.pxi":1001
  *         cdef int buffer_len, c_kind
  *         cdef const_char* c_text
  *         cdef const_char* c_encoding = _UNICODE_ENCODING             # <<<<<<<<<<<<<<
@@ -108649,7 +108828,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
   __pyx_v_c_encoding = __pyx_v_4lxml_5etree__UNICODE_ENCODING;
 
-  /* "src/lxml/parser.pxi":992
+  /* "src/lxml/parser.pxi":1003
  *         cdef const_char* c_encoding = _UNICODE_ENCODING
  *         cdef bint is_pep393_string = (
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(utext))             # <<<<<<<<<<<<<<
@@ -108667,7 +108846,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
   __pyx_L3_bool_binop_done:;
   __pyx_v_is_pep393_string = __pyx_t_1;
 
-  /* "src/lxml/parser.pxi":993
+  /* "src/lxml/parser.pxi":1004
  *         cdef bint is_pep393_string = (
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(utext))
  *         if is_pep393_string:             # <<<<<<<<<<<<<<
@@ -108677,7 +108856,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
   __pyx_t_1 = (__pyx_v_is_pep393_string != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":994
+    /* "src/lxml/parser.pxi":1005
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(utext))
  *         if is_pep393_string:
  *             c_text = <const_char*>python.PyUnicode_DATA(utext)             # <<<<<<<<<<<<<<
@@ -108686,7 +108865,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
     __pyx_v_c_text = ((const char *)PyUnicode_DATA(__pyx_v_utext));
 
-    /* "src/lxml/parser.pxi":995
+    /* "src/lxml/parser.pxi":1006
  *         if is_pep393_string:
  *             c_text = <const_char*>python.PyUnicode_DATA(utext)
  *             py_buffer_len = python.PyUnicode_GET_LENGTH(utext)             # <<<<<<<<<<<<<<
@@ -108695,7 +108874,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
     __pyx_v_py_buffer_len = PyUnicode_GET_LENGTH(__pyx_v_utext);
 
-    /* "src/lxml/parser.pxi":996
+    /* "src/lxml/parser.pxi":1007
  *             c_text = <const_char*>python.PyUnicode_DATA(utext)
  *             py_buffer_len = python.PyUnicode_GET_LENGTH(utext)
  *             c_kind = python.PyUnicode_KIND(utext)             # <<<<<<<<<<<<<<
@@ -108704,7 +108883,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
     __pyx_v_c_kind = PyUnicode_KIND(__pyx_v_utext);
 
-    /* "src/lxml/parser.pxi":997
+    /* "src/lxml/parser.pxi":1008
  *             py_buffer_len = python.PyUnicode_GET_LENGTH(utext)
  *             c_kind = python.PyUnicode_KIND(utext)
  *             if c_kind == 1:             # <<<<<<<<<<<<<<
@@ -108714,7 +108893,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
     switch (__pyx_v_c_kind) {
       case 1:
 
-      /* "src/lxml/parser.pxi":998
+      /* "src/lxml/parser.pxi":1009
  *             c_kind = python.PyUnicode_KIND(utext)
  *             if c_kind == 1:
  *                 c_encoding = 'ISO-8859-1'             # <<<<<<<<<<<<<<
@@ -108723,7 +108902,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
       __pyx_v_c_encoding = __pyx_k_ISO_8859_1;
 
-      /* "src/lxml/parser.pxi":997
+      /* "src/lxml/parser.pxi":1008
  *             py_buffer_len = python.PyUnicode_GET_LENGTH(utext)
  *             c_kind = python.PyUnicode_KIND(utext)
  *             if c_kind == 1:             # <<<<<<<<<<<<<<
@@ -108732,7 +108911,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
       break;
 
-      /* "src/lxml/parser.pxi":999
+      /* "src/lxml/parser.pxi":1010
  *             if c_kind == 1:
  *                 c_encoding = 'ISO-8859-1'
  *             elif c_kind == 2:             # <<<<<<<<<<<<<<
@@ -108741,7 +108920,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
       case 2:
 
-      /* "src/lxml/parser.pxi":1000
+      /* "src/lxml/parser.pxi":1011
  *                 c_encoding = 'ISO-8859-1'
  *             elif c_kind == 2:
  *                 py_buffer_len *= 2             # <<<<<<<<<<<<<<
@@ -108750,7 +108929,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
       __pyx_v_py_buffer_len = (__pyx_v_py_buffer_len * 2);
 
-      /* "src/lxml/parser.pxi":1001
+      /* "src/lxml/parser.pxi":1012
  *             elif c_kind == 2:
  *                 py_buffer_len *= 2
  *                 if python.PY_BIG_ENDIAN:             # <<<<<<<<<<<<<<
@@ -108760,7 +108939,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
       __pyx_t_1 = (PY_BIG_ENDIAN != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/parser.pxi":1002
+        /* "src/lxml/parser.pxi":1013
  *                 py_buffer_len *= 2
  *                 if python.PY_BIG_ENDIAN:
  *                     c_encoding = 'UTF-16BE'  # actually UCS-2             # <<<<<<<<<<<<<<
@@ -108769,7 +108948,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
         __pyx_v_c_encoding = __pyx_k_UTF_16BE;
 
-        /* "src/lxml/parser.pxi":1001
+        /* "src/lxml/parser.pxi":1012
  *             elif c_kind == 2:
  *                 py_buffer_len *= 2
  *                 if python.PY_BIG_ENDIAN:             # <<<<<<<<<<<<<<
@@ -108779,7 +108958,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
         goto __pyx_L6;
       }
 
-      /* "src/lxml/parser.pxi":1004
+      /* "src/lxml/parser.pxi":1015
  *                     c_encoding = 'UTF-16BE'  # actually UCS-2
  *                 else:
  *                     c_encoding = 'UTF-16LE'  # actually UCS-2             # <<<<<<<<<<<<<<
@@ -108791,7 +108970,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
       }
       __pyx_L6:;
 
-      /* "src/lxml/parser.pxi":999
+      /* "src/lxml/parser.pxi":1010
  *             if c_kind == 1:
  *                 c_encoding = 'ISO-8859-1'
  *             elif c_kind == 2:             # <<<<<<<<<<<<<<
@@ -108800,7 +108979,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
       break;
 
-      /* "src/lxml/parser.pxi":1005
+      /* "src/lxml/parser.pxi":1016
  *                 else:
  *                     c_encoding = 'UTF-16LE'  # actually UCS-2
  *             elif c_kind == 4:             # <<<<<<<<<<<<<<
@@ -108809,7 +108988,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
       case 4:
 
-      /* "src/lxml/parser.pxi":1006
+      /* "src/lxml/parser.pxi":1017
  *                     c_encoding = 'UTF-16LE'  # actually UCS-2
  *             elif c_kind == 4:
  *                 py_buffer_len *= 4             # <<<<<<<<<<<<<<
@@ -108818,7 +108997,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
       __pyx_v_py_buffer_len = (__pyx_v_py_buffer_len * 4);
 
-      /* "src/lxml/parser.pxi":1007
+      /* "src/lxml/parser.pxi":1018
  *             elif c_kind == 4:
  *                 py_buffer_len *= 4
  *                 if python.PY_BIG_ENDIAN:             # <<<<<<<<<<<<<<
@@ -108828,7 +109007,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
       __pyx_t_1 = (PY_BIG_ENDIAN != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/parser.pxi":1008
+        /* "src/lxml/parser.pxi":1019
  *                 py_buffer_len *= 4
  *                 if python.PY_BIG_ENDIAN:
  *                     c_encoding = 'UCS-4BE'             # <<<<<<<<<<<<<<
@@ -108837,7 +109016,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
         __pyx_v_c_encoding = __pyx_k_UCS_4BE;
 
-        /* "src/lxml/parser.pxi":1007
+        /* "src/lxml/parser.pxi":1018
  *             elif c_kind == 4:
  *                 py_buffer_len *= 4
  *                 if python.PY_BIG_ENDIAN:             # <<<<<<<<<<<<<<
@@ -108847,7 +109026,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
         goto __pyx_L7;
       }
 
-      /* "src/lxml/parser.pxi":1010
+      /* "src/lxml/parser.pxi":1021
  *                     c_encoding = 'UCS-4BE'
  *                 else:
  *                     c_encoding = 'UCS-4LE'             # <<<<<<<<<<<<<<
@@ -108859,7 +109038,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
       }
       __pyx_L7:;
 
-      /* "src/lxml/parser.pxi":1005
+      /* "src/lxml/parser.pxi":1016
  *                 else:
  *                     c_encoding = 'UTF-16LE'  # actually UCS-2
  *             elif c_kind == 4:             # <<<<<<<<<<<<<<
@@ -108869,7 +109048,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
       break;
       default:
 
-      /* "src/lxml/parser.pxi":1012
+      /* "src/lxml/parser.pxi":1023
  *                     c_encoding = 'UCS-4LE'
  *             else:
  *                 assert False, "Illegal Unicode kind %d" % c_kind             # <<<<<<<<<<<<<<
@@ -108879,21 +109058,21 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
       #ifndef CYTHON_WITHOUT_ASSERTIONS
       if (unlikely(!Py_OptimizeFlag)) {
         if (unlikely(!0)) {
-          __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_c_kind); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_c_kind); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Illegal_Unicode_kind_d, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Illegal_Unicode_kind_d, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           PyErr_SetObject(PyExc_AssertionError, __pyx_t_4);
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
       }
       #endif
       break;
     }
 
-    /* "src/lxml/parser.pxi":993
+    /* "src/lxml/parser.pxi":1004
  *         cdef bint is_pep393_string = (
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(utext))
  *         if is_pep393_string:             # <<<<<<<<<<<<<<
@@ -108903,7 +109082,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
     goto __pyx_L5;
   }
 
-  /* "src/lxml/parser.pxi":1014
+  /* "src/lxml/parser.pxi":1025
  *                 assert False, "Illegal Unicode kind %d" % c_kind
  *         else:
  *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(utext)             # <<<<<<<<<<<<<<
@@ -108913,7 +109092,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
   /*else*/ {
     __pyx_v_py_buffer_len = PyUnicode_GET_DATA_SIZE(__pyx_v_utext);
 
-    /* "src/lxml/parser.pxi":1015
+    /* "src/lxml/parser.pxi":1026
  *         else:
  *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(utext)
  *             c_text = python.PyUnicode_AS_DATA(utext)             # <<<<<<<<<<<<<<
@@ -108924,7 +109103,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
   }
   __pyx_L5:;
 
-  /* "src/lxml/parser.pxi":1016
+  /* "src/lxml/parser.pxi":1027
  *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(utext)
  *             c_text = python.PyUnicode_AS_DATA(utext)
  *         assert py_buffer_len <= limits.INT_MAX             # <<<<<<<<<<<<<<
@@ -108935,12 +109114,12 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_py_buffer_len <= INT_MAX) != 0))) {
       PyErr_SetNone(PyExc_AssertionError);
-      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
   }
   #endif
 
-  /* "src/lxml/parser.pxi":1017
+  /* "src/lxml/parser.pxi":1028
  *             c_text = python.PyUnicode_AS_DATA(utext)
  *         assert py_buffer_len <= limits.INT_MAX
  *         buffer_len = py_buffer_len             # <<<<<<<<<<<<<<
@@ -108949,28 +109128,28 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
   __pyx_v_buffer_len = __pyx_v_py_buffer_len;
 
-  /* "src/lxml/parser.pxi":1019
+  /* "src/lxml/parser.pxi":1030
  *         buffer_len = py_buffer_len
  * 
  *         context = self._getParserContext()             # <<<<<<<<<<<<<<
  *         context.prepare()
  *         try:
  */
-  __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "src/lxml/parser.pxi":1020
+  /* "src/lxml/parser.pxi":1031
  * 
  *         context = self._getParserContext()
  *         context.prepare()             # <<<<<<<<<<<<<<
  *         try:
  *             pctxt = context._c_ctxt
  */
-  __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1021
+  /* "src/lxml/parser.pxi":1032
  *         context = self._getParserContext()
  *         context.prepare()
  *         try:             # <<<<<<<<<<<<<<
@@ -108979,7 +109158,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
   /*try:*/ {
 
-    /* "src/lxml/parser.pxi":1022
+    /* "src/lxml/parser.pxi":1033
  *         context.prepare()
  *         try:
  *             pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
@@ -108989,7 +109168,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
     __pyx_t_6 = __pyx_v_context->_c_ctxt;
     __pyx_v_pctxt = __pyx_t_6;
 
-    /* "src/lxml/parser.pxi":1023
+    /* "src/lxml/parser.pxi":1034
  *         try:
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)             # <<<<<<<<<<<<<<
@@ -108998,7 +109177,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_pctxt);
 
-    /* "src/lxml/parser.pxi":1024
+    /* "src/lxml/parser.pxi":1035
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  *             orig_options = pctxt.options             # <<<<<<<<<<<<<<
@@ -109008,7 +109187,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
     __pyx_t_5 = __pyx_v_pctxt->options;
     __pyx_v_orig_options = __pyx_t_5;
 
-    /* "src/lxml/parser.pxi":1025
+    /* "src/lxml/parser.pxi":1036
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  *             orig_options = pctxt.options
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -109022,7 +109201,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
         #endif
         /*try:*/ {
 
-          /* "src/lxml/parser.pxi":1026
+          /* "src/lxml/parser.pxi":1037
  *             orig_options = pctxt.options
  *             with nogil:
  *                 if self._for_html:             # <<<<<<<<<<<<<<
@@ -109032,7 +109211,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
           __pyx_t_1 = (__pyx_v_self->_for_html != 0);
           if (__pyx_t_1) {
 
-            /* "src/lxml/parser.pxi":1027
+            /* "src/lxml/parser.pxi":1038
  *             with nogil:
  *                 if self._for_html:
  *                     result = htmlparser.htmlCtxtReadMemory(             # <<<<<<<<<<<<<<
@@ -109041,7 +109220,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
             __pyx_v_result = htmlCtxtReadMemory(__pyx_v_pctxt, __pyx_v_c_text, __pyx_v_buffer_len, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->_parse_options);
 
-            /* "src/lxml/parser.pxi":1030
+            /* "src/lxml/parser.pxi":1041
  *                         pctxt, c_text, buffer_len, c_filename, c_encoding,
  *                         self._parse_options)
  *                     if result is not NULL:             # <<<<<<<<<<<<<<
@@ -109051,7 +109230,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
             __pyx_t_1 = ((__pyx_v_result != NULL) != 0);
             if (__pyx_t_1) {
 
-              /* "src/lxml/parser.pxi":1031
+              /* "src/lxml/parser.pxi":1042
  *                         self._parse_options)
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
@@ -109061,7 +109240,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
               __pyx_t_1 = ((__pyx_f_4lxml_5etree__fixHtmlDictNames(__pyx_v_pctxt->dict, __pyx_v_result) < 0) != 0);
               if (__pyx_t_1) {
 
-                /* "src/lxml/parser.pxi":1032
+                /* "src/lxml/parser.pxi":1043
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
  *                             tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
@@ -109070,7 +109249,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
                 xmlFreeDoc(__pyx_v_result);
 
-                /* "src/lxml/parser.pxi":1033
+                /* "src/lxml/parser.pxi":1044
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
  *                             tree.xmlFreeDoc(result)
  *                             result = NULL             # <<<<<<<<<<<<<<
@@ -109079,7 +109258,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
                 __pyx_v_result = NULL;
 
-                /* "src/lxml/parser.pxi":1031
+                /* "src/lxml/parser.pxi":1042
  *                         self._parse_options)
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
@@ -109088,7 +109267,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
               }
 
-              /* "src/lxml/parser.pxi":1030
+              /* "src/lxml/parser.pxi":1041
  *                         pctxt, c_text, buffer_len, c_filename, c_encoding,
  *                         self._parse_options)
  *                     if result is not NULL:             # <<<<<<<<<<<<<<
@@ -109097,7 +109276,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
             }
 
-            /* "src/lxml/parser.pxi":1026
+            /* "src/lxml/parser.pxi":1037
  *             orig_options = pctxt.options
  *             with nogil:
  *                 if self._for_html:             # <<<<<<<<<<<<<<
@@ -109107,7 +109286,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
             goto __pyx_L14;
           }
 
-          /* "src/lxml/parser.pxi":1035
+          /* "src/lxml/parser.pxi":1046
  *                             result = NULL
  *                 else:
  *                     result = xmlparser.xmlCtxtReadMemory(             # <<<<<<<<<<<<<<
@@ -109116,7 +109295,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
           /*else*/ {
 
-            /* "src/lxml/parser.pxi":1037
+            /* "src/lxml/parser.pxi":1048
  *                     result = xmlparser.xmlCtxtReadMemory(
  *                         pctxt, c_text, buffer_len, c_filename, c_encoding,
  *                         self._parse_options)             # <<<<<<<<<<<<<<
@@ -109128,7 +109307,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
           __pyx_L14:;
         }
 
-        /* "src/lxml/parser.pxi":1025
+        /* "src/lxml/parser.pxi":1036
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  *             orig_options = pctxt.options
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -109146,7 +109325,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
         }
     }
 
-    /* "src/lxml/parser.pxi":1038
+    /* "src/lxml/parser.pxi":1049
  *                         pctxt, c_text, buffer_len, c_filename, c_encoding,
  *                         self._parse_options)
  *             pctxt.options = orig_options # work around libxml2 problem             # <<<<<<<<<<<<<<
@@ -109155,19 +109334,19 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
     __pyx_v_pctxt->options = __pyx_v_orig_options;
 
-    /* "src/lxml/parser.pxi":1040
+    /* "src/lxml/parser.pxi":1051
  *             pctxt.options = orig_options # work around libxml2 problem
  * 
  *             return context._handleParseResultDoc(self, result, None)             # <<<<<<<<<<<<<<
  *         finally:
  *             context.cleanup()
  */
-    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, Py_None); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
+    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, Py_None); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
     __pyx_r = __pyx_t_7;
     goto __pyx_L8_return;
   }
 
-  /* "src/lxml/parser.pxi":1042
+  /* "src/lxml/parser.pxi":1053
  *             return context._handleParseResultDoc(self, result, None)
  *         finally:
  *             context.cleanup()             # <<<<<<<<<<<<<<
@@ -109190,7 +109369,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
       __Pyx_XGOTREF(__pyx_t_15);
       __pyx_t_5 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
       {
-        __pyx_t_16 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L18_error;}
+        __pyx_t_16 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L18_error;}
       }
       if (PY_MAJOR_VERSION >= 3) {
         __Pyx_XGIVEREF(__pyx_t_13);
@@ -109220,13 +109399,13 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
     }
     __pyx_L8_return: {
       __pyx_t_7 = __pyx_r;
-      __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_r = __pyx_t_7;
       goto __pyx_L0;
     }
   }
 
-  /* "src/lxml/parser.pxi":981
+  /* "src/lxml/parser.pxi":992
  *     # internal parser methods
  * 
  *     cdef xmlDoc* _parseUnicodeDoc(self, utext, char* c_filename) except NULL:             # <<<<<<<<<<<<<<
@@ -109246,7 +109425,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1044
+/* "src/lxml/parser.pxi":1055
  *             context.cleanup()
  * 
  *     cdef xmlDoc* _parseDoc(self, char* c_text, int c_len,             # <<<<<<<<<<<<<<
@@ -109282,28 +109461,28 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_parseDoc", 0);
 
-  /* "src/lxml/parser.pxi":1052
+  /* "src/lxml/parser.pxi":1063
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         cdef char* c_encoding
  *         context = self._getParserContext()             # <<<<<<<<<<<<<<
  *         context.prepare()
  *         try:
  */
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":1053
+  /* "src/lxml/parser.pxi":1064
  *         cdef char* c_encoding
  *         context = self._getParserContext()
  *         context.prepare()             # <<<<<<<<<<<<<<
  *         try:
  *             pctxt = context._c_ctxt
  */
-  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1054
+  /* "src/lxml/parser.pxi":1065
  *         context = self._getParserContext()
  *         context.prepare()
  *         try:             # <<<<<<<<<<<<<<
@@ -109312,7 +109491,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
  */
   /*try:*/ {
 
-    /* "src/lxml/parser.pxi":1055
+    /* "src/lxml/parser.pxi":1066
  *         context.prepare()
  *         try:
  *             pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
@@ -109322,7 +109501,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
     __pyx_t_3 = __pyx_v_context->_c_ctxt;
     __pyx_v_pctxt = __pyx_t_3;
 
-    /* "src/lxml/parser.pxi":1056
+    /* "src/lxml/parser.pxi":1067
  *         try:
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)             # <<<<<<<<<<<<<<
@@ -109331,7 +109510,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
  */
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_pctxt);
 
-    /* "src/lxml/parser.pxi":1058
+    /* "src/lxml/parser.pxi":1069
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  * 
  *             if self._default_encoding is None:             # <<<<<<<<<<<<<<
@@ -109342,7 +109521,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
     __pyx_t_5 = (__pyx_t_4 != 0);
     if (__pyx_t_5) {
 
-      /* "src/lxml/parser.pxi":1059
+      /* "src/lxml/parser.pxi":1070
  * 
  *             if self._default_encoding is None:
  *                 c_encoding = NULL             # <<<<<<<<<<<<<<
@@ -109351,7 +109530,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
  */
       __pyx_v_c_encoding = NULL;
 
-      /* "src/lxml/parser.pxi":1058
+      /* "src/lxml/parser.pxi":1069
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  * 
  *             if self._default_encoding is None:             # <<<<<<<<<<<<<<
@@ -109361,7 +109540,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
       goto __pyx_L6;
     }
 
-    /* "src/lxml/parser.pxi":1061
+    /* "src/lxml/parser.pxi":1072
  *                 c_encoding = NULL
  *             else:
  *                 c_encoding = _cstr(self._default_encoding)             # <<<<<<<<<<<<<<
@@ -109376,7 +109555,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
     }
     __pyx_L6:;
 
-    /* "src/lxml/parser.pxi":1063
+    /* "src/lxml/parser.pxi":1074
  *                 c_encoding = _cstr(self._default_encoding)
  * 
  *             orig_options = pctxt.options             # <<<<<<<<<<<<<<
@@ -109386,7 +109565,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
     __pyx_t_2 = __pyx_v_pctxt->options;
     __pyx_v_orig_options = __pyx_t_2;
 
-    /* "src/lxml/parser.pxi":1064
+    /* "src/lxml/parser.pxi":1075
  * 
  *             orig_options = pctxt.options
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -109400,7 +109579,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
         #endif
         /*try:*/ {
 
-          /* "src/lxml/parser.pxi":1065
+          /* "src/lxml/parser.pxi":1076
  *             orig_options = pctxt.options
  *             with nogil:
  *                 if self._for_html:             # <<<<<<<<<<<<<<
@@ -109410,7 +109589,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
           __pyx_t_5 = (__pyx_v_self->_for_html != 0);
           if (__pyx_t_5) {
 
-            /* "src/lxml/parser.pxi":1066
+            /* "src/lxml/parser.pxi":1077
  *             with nogil:
  *                 if self._for_html:
  *                     result = htmlparser.htmlCtxtReadMemory(             # <<<<<<<<<<<<<<
@@ -109419,7 +109598,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
  */
             __pyx_v_result = htmlCtxtReadMemory(__pyx_v_pctxt, __pyx_v_c_text, __pyx_v_c_len, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->_parse_options);
 
-            /* "src/lxml/parser.pxi":1069
+            /* "src/lxml/parser.pxi":1080
  *                         pctxt, c_text, c_len, c_filename,
  *                         c_encoding, self._parse_options)
  *                     if result is not NULL:             # <<<<<<<<<<<<<<
@@ -109429,7 +109608,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
             __pyx_t_5 = ((__pyx_v_result != NULL) != 0);
             if (__pyx_t_5) {
 
-              /* "src/lxml/parser.pxi":1070
+              /* "src/lxml/parser.pxi":1081
  *                         c_encoding, self._parse_options)
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
@@ -109439,7 +109618,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
               __pyx_t_5 = ((__pyx_f_4lxml_5etree__fixHtmlDictNames(__pyx_v_pctxt->dict, __pyx_v_result) < 0) != 0);
               if (__pyx_t_5) {
 
-                /* "src/lxml/parser.pxi":1071
+                /* "src/lxml/parser.pxi":1082
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
  *                             tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
@@ -109448,7 +109627,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
  */
                 xmlFreeDoc(__pyx_v_result);
 
-                /* "src/lxml/parser.pxi":1072
+                /* "src/lxml/parser.pxi":1083
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
  *                             tree.xmlFreeDoc(result)
  *                             result = NULL             # <<<<<<<<<<<<<<
@@ -109457,7 +109636,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
  */
                 __pyx_v_result = NULL;
 
-                /* "src/lxml/parser.pxi":1070
+                /* "src/lxml/parser.pxi":1081
  *                         c_encoding, self._parse_options)
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
@@ -109466,7 +109645,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
  */
               }
 
-              /* "src/lxml/parser.pxi":1069
+              /* "src/lxml/parser.pxi":1080
  *                         pctxt, c_text, c_len, c_filename,
  *                         c_encoding, self._parse_options)
  *                     if result is not NULL:             # <<<<<<<<<<<<<<
@@ -109475,7 +109654,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
  */
             }
 
-            /* "src/lxml/parser.pxi":1065
+            /* "src/lxml/parser.pxi":1076
  *             orig_options = pctxt.options
  *             with nogil:
  *                 if self._for_html:             # <<<<<<<<<<<<<<
@@ -109485,7 +109664,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
             goto __pyx_L10;
           }
 
-          /* "src/lxml/parser.pxi":1074
+          /* "src/lxml/parser.pxi":1085
  *                             result = NULL
  *                 else:
  *                     result = xmlparser.xmlCtxtReadMemory(             # <<<<<<<<<<<<<<
@@ -109494,7 +109673,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
  */
           /*else*/ {
 
-            /* "src/lxml/parser.pxi":1076
+            /* "src/lxml/parser.pxi":1087
  *                     result = xmlparser.xmlCtxtReadMemory(
  *                         pctxt, c_text, c_len, c_filename,
  *                         c_encoding, self._parse_options)             # <<<<<<<<<<<<<<
@@ -109506,7 +109685,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
           __pyx_L10:;
         }
 
-        /* "src/lxml/parser.pxi":1064
+        /* "src/lxml/parser.pxi":1075
  * 
  *             orig_options = pctxt.options
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -109524,7 +109703,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
         }
     }
 
-    /* "src/lxml/parser.pxi":1077
+    /* "src/lxml/parser.pxi":1088
  *                         pctxt, c_text, c_len, c_filename,
  *                         c_encoding, self._parse_options)
  *             pctxt.options = orig_options # work around libxml2 problem             # <<<<<<<<<<<<<<
@@ -109533,19 +109712,19 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
  */
     __pyx_v_pctxt->options = __pyx_v_orig_options;
 
-    /* "src/lxml/parser.pxi":1079
+    /* "src/lxml/parser.pxi":1090
  *             pctxt.options = orig_options # work around libxml2 problem
  * 
  *             return context._handleParseResultDoc(self, result, None)             # <<<<<<<<<<<<<<
  *         finally:
  *             context.cleanup()
  */
-    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, Py_None); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, Py_None); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __pyx_r = __pyx_t_6;
     goto __pyx_L3_return;
   }
 
-  /* "src/lxml/parser.pxi":1081
+  /* "src/lxml/parser.pxi":1092
  *             return context._handleParseResultDoc(self, result, None)
  *         finally:
  *             context.cleanup()             # <<<<<<<<<<<<<<
@@ -109567,7 +109746,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
       __Pyx_XGOTREF(__pyx_t_14);
       __pyx_t_2 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename;
       {
-        __pyx_t_15 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L14_error;}
+        __pyx_t_15 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L14_error;}
       }
       if (PY_MAJOR_VERSION >= 3) {
         __Pyx_XGIVEREF(__pyx_t_12);
@@ -109597,13 +109776,13 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
     }
     __pyx_L3_return: {
       __pyx_t_6 = __pyx_r;
-      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_r = __pyx_t_6;
       goto __pyx_L0;
     }
   }
 
-  /* "src/lxml/parser.pxi":1044
+  /* "src/lxml/parser.pxi":1055
  *             context.cleanup()
  * 
  *     cdef xmlDoc* _parseDoc(self, char* c_text, int c_len,             # <<<<<<<<<<<<<<
@@ -109622,7 +109801,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1083
+/* "src/lxml/parser.pxi":1094
  *             context.cleanup()
  * 
  *     cdef xmlDoc* _parseDocFromFile(self, char* c_filename) except NULL:             # <<<<<<<<<<<<<<
@@ -109658,7 +109837,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_parseDocFromFile", 0);
 
-  /* "src/lxml/parser.pxi":1088
+  /* "src/lxml/parser.pxi":1099
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         cdef char* c_encoding
  *         result = NULL             # <<<<<<<<<<<<<<
@@ -109667,28 +109846,28 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
  */
   __pyx_v_result = NULL;
 
-  /* "src/lxml/parser.pxi":1090
+  /* "src/lxml/parser.pxi":1101
  *         result = NULL
  * 
  *         context = self._getParserContext()             # <<<<<<<<<<<<<<
  *         context.prepare()
  *         try:
  */
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":1091
+  /* "src/lxml/parser.pxi":1102
  * 
  *         context = self._getParserContext()
  *         context.prepare()             # <<<<<<<<<<<<<<
  *         try:
  *             pctxt = context._c_ctxt
  */
-  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1092
+  /* "src/lxml/parser.pxi":1103
  *         context = self._getParserContext()
  *         context.prepare()
  *         try:             # <<<<<<<<<<<<<<
@@ -109697,7 +109876,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
  */
   /*try:*/ {
 
-    /* "src/lxml/parser.pxi":1093
+    /* "src/lxml/parser.pxi":1104
  *         context.prepare()
  *         try:
  *             pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
@@ -109707,7 +109886,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
     __pyx_t_3 = __pyx_v_context->_c_ctxt;
     __pyx_v_pctxt = __pyx_t_3;
 
-    /* "src/lxml/parser.pxi":1094
+    /* "src/lxml/parser.pxi":1105
  *         try:
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)             # <<<<<<<<<<<<<<
@@ -109716,7 +109895,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
  */
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_pctxt);
 
-    /* "src/lxml/parser.pxi":1096
+    /* "src/lxml/parser.pxi":1107
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  * 
  *             if self._default_encoding is None:             # <<<<<<<<<<<<<<
@@ -109727,7 +109906,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
     __pyx_t_5 = (__pyx_t_4 != 0);
     if (__pyx_t_5) {
 
-      /* "src/lxml/parser.pxi":1097
+      /* "src/lxml/parser.pxi":1108
  * 
  *             if self._default_encoding is None:
  *                 c_encoding = NULL             # <<<<<<<<<<<<<<
@@ -109736,7 +109915,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
  */
       __pyx_v_c_encoding = NULL;
 
-      /* "src/lxml/parser.pxi":1096
+      /* "src/lxml/parser.pxi":1107
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  * 
  *             if self._default_encoding is None:             # <<<<<<<<<<<<<<
@@ -109746,7 +109925,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
       goto __pyx_L6;
     }
 
-    /* "src/lxml/parser.pxi":1099
+    /* "src/lxml/parser.pxi":1110
  *                 c_encoding = NULL
  *             else:
  *                 c_encoding = _cstr(self._default_encoding)             # <<<<<<<<<<<<<<
@@ -109761,7 +109940,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
     }
     __pyx_L6:;
 
-    /* "src/lxml/parser.pxi":1101
+    /* "src/lxml/parser.pxi":1112
  *                 c_encoding = _cstr(self._default_encoding)
  * 
  *             orig_options = pctxt.options             # <<<<<<<<<<<<<<
@@ -109771,7 +109950,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
     __pyx_t_2 = __pyx_v_pctxt->options;
     __pyx_v_orig_options = __pyx_t_2;
 
-    /* "src/lxml/parser.pxi":1102
+    /* "src/lxml/parser.pxi":1113
  * 
  *             orig_options = pctxt.options
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -109785,7 +109964,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
         #endif
         /*try:*/ {
 
-          /* "src/lxml/parser.pxi":1103
+          /* "src/lxml/parser.pxi":1114
  *             orig_options = pctxt.options
  *             with nogil:
  *                 if self._for_html:             # <<<<<<<<<<<<<<
@@ -109795,7 +109974,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
           __pyx_t_5 = (__pyx_v_self->_for_html != 0);
           if (__pyx_t_5) {
 
-            /* "src/lxml/parser.pxi":1104
+            /* "src/lxml/parser.pxi":1115
  *             with nogil:
  *                 if self._for_html:
  *                     result = htmlparser.htmlCtxtReadFile(             # <<<<<<<<<<<<<<
@@ -109804,7 +109983,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
  */
             __pyx_v_result = htmlCtxtReadFile(__pyx_v_pctxt, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->_parse_options);
 
-            /* "src/lxml/parser.pxi":1106
+            /* "src/lxml/parser.pxi":1117
  *                     result = htmlparser.htmlCtxtReadFile(
  *                         pctxt, c_filename, c_encoding, self._parse_options)
  *                     if result is not NULL:             # <<<<<<<<<<<<<<
@@ -109814,7 +109993,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
             __pyx_t_5 = ((__pyx_v_result != NULL) != 0);
             if (__pyx_t_5) {
 
-              /* "src/lxml/parser.pxi":1107
+              /* "src/lxml/parser.pxi":1118
  *                         pctxt, c_filename, c_encoding, self._parse_options)
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
@@ -109824,7 +110003,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
               __pyx_t_5 = ((__pyx_f_4lxml_5etree__fixHtmlDictNames(__pyx_v_pctxt->dict, __pyx_v_result) < 0) != 0);
               if (__pyx_t_5) {
 
-                /* "src/lxml/parser.pxi":1108
+                /* "src/lxml/parser.pxi":1119
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
  *                             tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
@@ -109833,7 +110012,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
  */
                 xmlFreeDoc(__pyx_v_result);
 
-                /* "src/lxml/parser.pxi":1109
+                /* "src/lxml/parser.pxi":1120
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
  *                             tree.xmlFreeDoc(result)
  *                             result = NULL             # <<<<<<<<<<<<<<
@@ -109842,7 +110021,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
  */
                 __pyx_v_result = NULL;
 
-                /* "src/lxml/parser.pxi":1107
+                /* "src/lxml/parser.pxi":1118
  *                         pctxt, c_filename, c_encoding, self._parse_options)
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
@@ -109851,7 +110030,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
  */
               }
 
-              /* "src/lxml/parser.pxi":1106
+              /* "src/lxml/parser.pxi":1117
  *                     result = htmlparser.htmlCtxtReadFile(
  *                         pctxt, c_filename, c_encoding, self._parse_options)
  *                     if result is not NULL:             # <<<<<<<<<<<<<<
@@ -109860,7 +110039,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
  */
             }
 
-            /* "src/lxml/parser.pxi":1103
+            /* "src/lxml/parser.pxi":1114
  *             orig_options = pctxt.options
  *             with nogil:
  *                 if self._for_html:             # <<<<<<<<<<<<<<
@@ -109870,7 +110049,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
             goto __pyx_L10;
           }
 
-          /* "src/lxml/parser.pxi":1111
+          /* "src/lxml/parser.pxi":1122
  *                             result = NULL
  *                 else:
  *                     result = xmlparser.xmlCtxtReadFile(             # <<<<<<<<<<<<<<
@@ -109879,7 +110058,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
  */
           /*else*/ {
 
-            /* "src/lxml/parser.pxi":1112
+            /* "src/lxml/parser.pxi":1123
  *                 else:
  *                     result = xmlparser.xmlCtxtReadFile(
  *                         pctxt, c_filename, c_encoding, self._parse_options)             # <<<<<<<<<<<<<<
@@ -109891,7 +110070,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
           __pyx_L10:;
         }
 
-        /* "src/lxml/parser.pxi":1102
+        /* "src/lxml/parser.pxi":1113
  * 
  *             orig_options = pctxt.options
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -109909,7 +110088,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
         }
     }
 
-    /* "src/lxml/parser.pxi":1113
+    /* "src/lxml/parser.pxi":1124
  *                     result = xmlparser.xmlCtxtReadFile(
  *                         pctxt, c_filename, c_encoding, self._parse_options)
  *             pctxt.options = orig_options # work around libxml2 problem             # <<<<<<<<<<<<<<
@@ -109918,22 +110097,22 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
  */
     __pyx_v_pctxt->options = __pyx_v_orig_options;
 
-    /* "src/lxml/parser.pxi":1115
+    /* "src/lxml/parser.pxi":1126
  *             pctxt.options = orig_options # work around libxml2 problem
  * 
  *             return context._handleParseResultDoc(self, result, c_filename)             # <<<<<<<<<<<<<<
  *         finally:
  *             context.cleanup()
  */
-    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_c_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_c_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_r = __pyx_t_6;
     goto __pyx_L3_return;
   }
 
-  /* "src/lxml/parser.pxi":1117
+  /* "src/lxml/parser.pxi":1128
  *             return context._handleParseResultDoc(self, result, c_filename)
  *         finally:
  *             context.cleanup()             # <<<<<<<<<<<<<<
@@ -109955,7 +110134,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
       __Pyx_XGOTREF(__pyx_t_14);
       __pyx_t_2 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename;
       {
-        __pyx_t_15 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L14_error;}
+        __pyx_t_15 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L14_error;}
       }
       if (PY_MAJOR_VERSION >= 3) {
         __Pyx_XGIVEREF(__pyx_t_12);
@@ -109985,13 +110164,13 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
     }
     __pyx_L3_return: {
       __pyx_t_6 = __pyx_r;
-      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_r = __pyx_t_6;
       goto __pyx_L0;
     }
   }
 
-  /* "src/lxml/parser.pxi":1083
+  /* "src/lxml/parser.pxi":1094
  *             context.cleanup()
  * 
  *     cdef xmlDoc* _parseDocFromFile(self, char* c_filename) except NULL:             # <<<<<<<<<<<<<<
@@ -110010,7 +110189,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1119
+/* "src/lxml/parser.pxi":1130
  *             context.cleanup()
  * 
  *     cdef xmlDoc* _parseDocFromFilelike(self, filelike, filename,             # <<<<<<<<<<<<<<
@@ -110047,18 +110226,18 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
   __Pyx_RefNannySetupContext("_parseDocFromFilelike", 0);
   __Pyx_INCREF(__pyx_v_filename);
 
-  /* "src/lxml/parser.pxi":1126
+  /* "src/lxml/parser.pxi":1137
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         cdef char* c_filename
  *         if not filename:             # <<<<<<<<<<<<<<
  *             filename = None
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_filename); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_filename); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = ((!__pyx_t_1) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1127
+    /* "src/lxml/parser.pxi":1138
  *         cdef char* c_filename
  *         if not filename:
  *             filename = None             # <<<<<<<<<<<<<<
@@ -110068,7 +110247,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
     __Pyx_INCREF(Py_None);
     __Pyx_DECREF_SET(__pyx_v_filename, Py_None);
 
-    /* "src/lxml/parser.pxi":1126
+    /* "src/lxml/parser.pxi":1137
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         cdef char* c_filename
  *         if not filename:             # <<<<<<<<<<<<<<
@@ -110077,28 +110256,28 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
  */
   }
 
-  /* "src/lxml/parser.pxi":1129
+  /* "src/lxml/parser.pxi":1140
  *             filename = None
  * 
  *         context = self._getParserContext()             # <<<<<<<<<<<<<<
  *         context.prepare()
  *         try:
  */
-  __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1130
+  /* "src/lxml/parser.pxi":1141
  * 
  *         context = self._getParserContext()
  *         context.prepare()             # <<<<<<<<<<<<<<
  *         try:
  *             pctxt = context._c_ctxt
  */
-  __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1131
+  /* "src/lxml/parser.pxi":1142
  *         context = self._getParserContext()
  *         context.prepare()
  *         try:             # <<<<<<<<<<<<<<
@@ -110107,7 +110286,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
  */
   /*try:*/ {
 
-    /* "src/lxml/parser.pxi":1132
+    /* "src/lxml/parser.pxi":1143
  *         context.prepare()
  *         try:
  *             pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
@@ -110117,7 +110296,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
     __pyx_t_5 = __pyx_v_context->_c_ctxt;
     __pyx_v_pctxt = __pyx_t_5;
 
-    /* "src/lxml/parser.pxi":1133
+    /* "src/lxml/parser.pxi":1144
  *         try:
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)             # <<<<<<<<<<<<<<
@@ -110126,14 +110305,14 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
  */
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_pctxt);
 
-    /* "src/lxml/parser.pxi":1136
+    /* "src/lxml/parser.pxi":1147
  *             file_context = _FileReaderContext(
  *                 filelike, context, filename,
  *                 encoding or self._default_encoding)             # <<<<<<<<<<<<<<
  *             result = file_context._readDoc(pctxt, self._parse_options)
  * 
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_encoding); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1136; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_encoding); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
     if (!__pyx_t_2) {
     } else {
       __Pyx_INCREF(__pyx_v_encoding);
@@ -110144,14 +110323,14 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
     __pyx_t_3 = __pyx_v_self->_default_encoding;
     __pyx_L7_bool_binop_done:;
 
-    /* "src/lxml/parser.pxi":1134
+    /* "src/lxml/parser.pxi":1145
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  *             file_context = _FileReaderContext(             # <<<<<<<<<<<<<<
  *                 filelike, context, filename,
  *                 encoding or self._default_encoding)
  */
-    __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
+    __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_INCREF(__pyx_v_filelike);
     __Pyx_GIVEREF(__pyx_v_filelike);
@@ -110165,13 +110344,13 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__FileReaderContext), __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__FileReaderContext), __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_v_file_context = ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":1137
+    /* "src/lxml/parser.pxi":1148
  *                 filelike, context, filename,
  *                 encoding or self._default_encoding)
  *             result = file_context._readDoc(pctxt, self._parse_options)             # <<<<<<<<<<<<<<
@@ -110180,19 +110359,19 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
  */
     __pyx_v_result = __pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(__pyx_v_file_context, __pyx_v_pctxt, __pyx_v_self->_parse_options);
 
-    /* "src/lxml/parser.pxi":1139
+    /* "src/lxml/parser.pxi":1150
  *             result = file_context._readDoc(pctxt, self._parse_options)
  * 
  *             return context._handleParseResultDoc(             # <<<<<<<<<<<<<<
  *                 self, result, filename)
  *         finally:
  */
-    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, __pyx_v_filename); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
+    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, __pyx_v_filename); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
     __pyx_r = __pyx_t_7;
     goto __pyx_L4_return;
   }
 
-  /* "src/lxml/parser.pxi":1142
+  /* "src/lxml/parser.pxi":1153
  *                 self, result, filename)
  *         finally:
  *             context.cleanup()             # <<<<<<<<<<<<<<
@@ -110215,7 +110394,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
       __Pyx_XGOTREF(__pyx_t_15);
       __pyx_t_4 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
       {
-        __pyx_t_16 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
+        __pyx_t_16 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
       }
       if (PY_MAJOR_VERSION >= 3) {
         __Pyx_XGIVEREF(__pyx_t_13);
@@ -110245,13 +110424,13 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
     }
     __pyx_L4_return: {
       __pyx_t_7 = __pyx_r;
-      __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_r = __pyx_t_7;
       goto __pyx_L0;
     }
   }
 
-  /* "src/lxml/parser.pxi":1119
+  /* "src/lxml/parser.pxi":1130
  *             context.cleanup()
  * 
  *     cdef xmlDoc* _parseDocFromFilelike(self, filelike, filename,             # <<<<<<<<<<<<<<
@@ -110273,7 +110452,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":766
+/* "src/lxml/parser.pxi":777
  *     cdef XMLSchema _schema
  *     cdef bytes _filename
  *     cdef readonly object target             # <<<<<<<<<<<<<<
@@ -110310,7 +110489,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_6target___get__(struct __py
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1145
+/* "src/lxml/parser.pxi":1156
  * 
  * 
  * cdef void _initSaxDocument(void* ctxt) with gil:             # <<<<<<<<<<<<<<
@@ -110334,7 +110513,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
   #endif
   __Pyx_RefNannySetupContext("_initSaxDocument", 0);
 
-  /* "src/lxml/parser.pxi":1146
+  /* "src/lxml/parser.pxi":1157
  * 
  * cdef void _initSaxDocument(void* ctxt) with gil:
  *     xmlparser.xmlSAX2StartDocument(ctxt)             # <<<<<<<<<<<<<<
@@ -110343,7 +110522,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
   xmlSAX2StartDocument(__pyx_v_ctxt);
 
-  /* "src/lxml/parser.pxi":1147
+  /* "src/lxml/parser.pxi":1158
  * cdef void _initSaxDocument(void* ctxt) with gil:
  *     xmlparser.xmlSAX2StartDocument(ctxt)
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
@@ -110352,7 +110531,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
   __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);
 
-  /* "src/lxml/parser.pxi":1148
+  /* "src/lxml/parser.pxi":1159
  *     xmlparser.xmlSAX2StartDocument(ctxt)
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     c_doc = c_ctxt.myDoc             # <<<<<<<<<<<<<<
@@ -110362,7 +110541,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
   __pyx_t_1 = __pyx_v_c_ctxt->myDoc;
   __pyx_v_c_doc = __pyx_t_1;
 
-  /* "src/lxml/parser.pxi":1151
+  /* "src/lxml/parser.pxi":1162
  * 
  *     # set up document dict
  *     if c_doc and c_ctxt.dict and not c_doc.dict:             # <<<<<<<<<<<<<<
@@ -110386,7 +110565,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1153
+    /* "src/lxml/parser.pxi":1164
  *     if c_doc and c_ctxt.dict and not c_doc.dict:
  *         # I have no idea why libxml2 disables this - we need it
  *         c_ctxt.dictNames = 1             # <<<<<<<<<<<<<<
@@ -110395,7 +110574,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
     __pyx_v_c_ctxt->dictNames = 1;
 
-    /* "src/lxml/parser.pxi":1154
+    /* "src/lxml/parser.pxi":1165
  *         # I have no idea why libxml2 disables this - we need it
  *         c_ctxt.dictNames = 1
  *         c_doc.dict = c_ctxt.dict             # <<<<<<<<<<<<<<
@@ -110405,7 +110584,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
     __pyx_t_4 = __pyx_v_c_ctxt->dict;
     __pyx_v_c_doc->dict = __pyx_t_4;
 
-    /* "src/lxml/parser.pxi":1155
+    /* "src/lxml/parser.pxi":1166
  *         c_ctxt.dictNames = 1
  *         c_doc.dict = c_ctxt.dict
  *         xmlparser.xmlDictReference(c_ctxt.dict)             # <<<<<<<<<<<<<<
@@ -110414,7 +110593,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
     xmlDictReference(__pyx_v_c_ctxt->dict);
 
-    /* "src/lxml/parser.pxi":1151
+    /* "src/lxml/parser.pxi":1162
  * 
  *     # set up document dict
  *     if c_doc and c_ctxt.dict and not c_doc.dict:             # <<<<<<<<<<<<<<
@@ -110423,7 +110602,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
   }
 
-  /* "src/lxml/parser.pxi":1158
+  /* "src/lxml/parser.pxi":1169
  * 
  *     # set up XML ID hash table
  *     if c_ctxt._private and not c_ctxt.html:             # <<<<<<<<<<<<<<
@@ -110441,7 +110620,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
   __pyx_L8_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1159
+    /* "src/lxml/parser.pxi":1170
  *     # set up XML ID hash table
  *     if c_ctxt._private and not c_ctxt.html:
  *         context = <_ParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
@@ -110453,7 +110632,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
     __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "src/lxml/parser.pxi":1160
+    /* "src/lxml/parser.pxi":1171
  *     if c_ctxt._private and not c_ctxt.html:
  *         context = <_ParserContext>c_ctxt._private
  *         if context._collect_ids:             # <<<<<<<<<<<<<<
@@ -110463,7 +110642,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
     __pyx_t_2 = (__pyx_v_context->_collect_ids != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":1162
+      /* "src/lxml/parser.pxi":1173
  *         if context._collect_ids:
  *             # keep the global parser dict from filling up with XML IDs
  *             if c_doc and not c_doc.ids:             # <<<<<<<<<<<<<<
@@ -110481,7 +110660,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
       __pyx_L12_bool_binop_done:;
       if (__pyx_t_2) {
 
-        /* "src/lxml/parser.pxi":1164
+        /* "src/lxml/parser.pxi":1175
  *             if c_doc and not c_doc.ids:
  *                 # memory errors are not fatal here
  *                 c_dict = xmlparser.xmlDictCreate()             # <<<<<<<<<<<<<<
@@ -110490,7 +110669,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
         __pyx_v_c_dict = xmlDictCreate();
 
-        /* "src/lxml/parser.pxi":1165
+        /* "src/lxml/parser.pxi":1176
  *                 # memory errors are not fatal here
  *                 c_dict = xmlparser.xmlDictCreate()
  *                 if c_dict:             # <<<<<<<<<<<<<<
@@ -110500,7 +110679,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
         __pyx_t_2 = (__pyx_v_c_dict != 0);
         if (__pyx_t_2) {
 
-          /* "src/lxml/parser.pxi":1166
+          /* "src/lxml/parser.pxi":1177
  *                 c_dict = xmlparser.xmlDictCreate()
  *                 if c_dict:
  *                     c_doc.ids = tree.xmlHashCreateDict(0, c_dict)             # <<<<<<<<<<<<<<
@@ -110509,7 +110688,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
           __pyx_v_c_doc->ids = xmlHashCreateDict(0, __pyx_v_c_dict);
 
-          /* "src/lxml/parser.pxi":1167
+          /* "src/lxml/parser.pxi":1178
  *                 if c_dict:
  *                     c_doc.ids = tree.xmlHashCreateDict(0, c_dict)
  *                     xmlparser.xmlDictFree(c_dict)             # <<<<<<<<<<<<<<
@@ -110518,7 +110697,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
           xmlDictFree(__pyx_v_c_dict);
 
-          /* "src/lxml/parser.pxi":1165
+          /* "src/lxml/parser.pxi":1176
  *                 # memory errors are not fatal here
  *                 c_dict = xmlparser.xmlDictCreate()
  *                 if c_dict:             # <<<<<<<<<<<<<<
@@ -110528,7 +110707,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
           goto __pyx_L14;
         }
 
-        /* "src/lxml/parser.pxi":1169
+        /* "src/lxml/parser.pxi":1180
  *                     xmlparser.xmlDictFree(c_dict)
  *                 else:
  *                     c_doc.ids = tree.xmlHashCreate(0)             # <<<<<<<<<<<<<<
@@ -110540,7 +110719,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
         }
         __pyx_L14:;
 
-        /* "src/lxml/parser.pxi":1162
+        /* "src/lxml/parser.pxi":1173
  *         if context._collect_ids:
  *             # keep the global parser dict from filling up with XML IDs
  *             if c_doc and not c_doc.ids:             # <<<<<<<<<<<<<<
@@ -110549,7 +110728,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
       }
 
-      /* "src/lxml/parser.pxi":1160
+      /* "src/lxml/parser.pxi":1171
  *     if c_ctxt._private and not c_ctxt.html:
  *         context = <_ParserContext>c_ctxt._private
  *         if context._collect_ids:             # <<<<<<<<<<<<<<
@@ -110559,7 +110738,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
       goto __pyx_L10;
     }
 
-    /* "src/lxml/parser.pxi":1171
+    /* "src/lxml/parser.pxi":1182
  *                     c_doc.ids = tree.xmlHashCreate(0)
  *         else:
  *             c_ctxt.loadsubset |= xmlparser.XML_SKIP_IDS             # <<<<<<<<<<<<<<
@@ -110569,7 +110748,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
     /*else*/ {
       __pyx_v_c_ctxt->loadsubset = (__pyx_v_c_ctxt->loadsubset | XML_SKIP_IDS);
 
-      /* "src/lxml/parser.pxi":1172
+      /* "src/lxml/parser.pxi":1183
  *         else:
  *             c_ctxt.loadsubset |= xmlparser.XML_SKIP_IDS
  *             if c_doc and c_doc.ids and not tree.xmlHashSize(c_doc.ids):             # <<<<<<<<<<<<<<
@@ -110593,7 +110772,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
       __pyx_L16_bool_binop_done:;
       if (__pyx_t_2) {
 
-        /* "src/lxml/parser.pxi":1174
+        /* "src/lxml/parser.pxi":1185
  *             if c_doc and c_doc.ids and not tree.xmlHashSize(c_doc.ids):
  *                 # already initialised but empty => clear
  *                 tree.xmlHashFree(c_doc.ids, NULL)             # <<<<<<<<<<<<<<
@@ -110602,7 +110781,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
         xmlHashFree(__pyx_v_c_doc->ids, NULL);
 
-        /* "src/lxml/parser.pxi":1175
+        /* "src/lxml/parser.pxi":1186
  *                 # already initialised but empty => clear
  *                 tree.xmlHashFree(c_doc.ids, NULL)
  *                 c_doc.ids = NULL             # <<<<<<<<<<<<<<
@@ -110611,7 +110790,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
         __pyx_v_c_doc->ids = NULL;
 
-        /* "src/lxml/parser.pxi":1172
+        /* "src/lxml/parser.pxi":1183
  *         else:
  *             c_ctxt.loadsubset |= xmlparser.XML_SKIP_IDS
  *             if c_doc and c_doc.ids and not tree.xmlHashSize(c_doc.ids):             # <<<<<<<<<<<<<<
@@ -110622,7 +110801,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
     }
     __pyx_L10:;
 
-    /* "src/lxml/parser.pxi":1158
+    /* "src/lxml/parser.pxi":1169
  * 
  *     # set up XML ID hash table
  *     if c_ctxt._private and not c_ctxt.html:             # <<<<<<<<<<<<<<
@@ -110631,7 +110810,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
   }
 
-  /* "src/lxml/parser.pxi":1145
+  /* "src/lxml/parser.pxi":1156
  * 
  * 
  * cdef void _initSaxDocument(void* ctxt) with gil:             # <<<<<<<<<<<<<<
@@ -110647,7 +110826,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
   #endif
 }
 
-/* "src/lxml/parser.pxi":1191
+/* "src/lxml/parser.pxi":1202
  *         different from what the ``error_log`` property returns.
  *         """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -110678,7 +110857,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_14feed_error_log___get__(st
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "src/lxml/parser.pxi":1192
+  /* "src/lxml/parser.pxi":1203
  *         """
  *         def __get__(self):
  *             return self._getPushParserContext()._error_log.copy()             # <<<<<<<<<<<<<<
@@ -110686,16 +110865,16 @@ static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_14feed_error_log___get__(st
  *     cpdef feed(self, data):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1)->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1)->_error_log), 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1)->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1)->_error_log), 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1191
+  /* "src/lxml/parser.pxi":1202
  *         different from what the ``error_log`` property returns.
  *         """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -110715,7 +110894,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_14feed_error_log___get__(st
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1194
+/* "src/lxml/parser.pxi":1205
  *             return self._getPushParserContext()._error_log.copy()
  * 
  *     cpdef feed(self, data):             # <<<<<<<<<<<<<<
@@ -110771,7 +110950,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
   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 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_feed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_feed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1205; __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_11_FeedParser_1feed)) {
       __Pyx_XDECREF(__pyx_r);
@@ -110787,16 +110966,16 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         }
       }
       if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
       } else {
-        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
         __Pyx_INCREF(__pyx_v_data);
         __Pyx_GIVEREF(__pyx_v_data);
         PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_data);
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       }
@@ -110809,7 +110988,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "src/lxml/parser.pxi":1219
+  /* "src/lxml/parser.pxi":1230
  *         cdef int buffer_len
  *         cdef int error
  *         cdef bint recover = self._parse_options & xmlparser.XML_PARSE_RECOVER             # <<<<<<<<<<<<<<
@@ -110818,7 +110997,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
   __pyx_v_recover = (__pyx_v_self->__pyx_base._parse_options & XML_PARSE_RECOVER);
 
-  /* "src/lxml/parser.pxi":1220
+  /* "src/lxml/parser.pxi":1231
  *         cdef int error
  *         cdef bint recover = self._parse_options & xmlparser.XML_PARSE_RECOVER
  *         if isinstance(data, bytes):             # <<<<<<<<<<<<<<
@@ -110829,7 +111008,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
   __pyx_t_7 = (__pyx_t_6 != 0);
   if (__pyx_t_7) {
 
-    /* "src/lxml/parser.pxi":1221
+    /* "src/lxml/parser.pxi":1232
  *         cdef bint recover = self._parse_options & xmlparser.XML_PARSE_RECOVER
  *         if isinstance(data, bytes):
  *             if self._default_encoding is None:             # <<<<<<<<<<<<<<
@@ -110840,7 +111019,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     __pyx_t_6 = (__pyx_t_7 != 0);
     if (__pyx_t_6) {
 
-      /* "src/lxml/parser.pxi":1222
+      /* "src/lxml/parser.pxi":1233
  *         if isinstance(data, bytes):
  *             if self._default_encoding is None:
  *                 c_encoding = NULL             # <<<<<<<<<<<<<<
@@ -110849,7 +111028,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
       __pyx_v_c_encoding = NULL;
 
-      /* "src/lxml/parser.pxi":1221
+      /* "src/lxml/parser.pxi":1232
  *         cdef bint recover = self._parse_options & xmlparser.XML_PARSE_RECOVER
  *         if isinstance(data, bytes):
  *             if self._default_encoding is None:             # <<<<<<<<<<<<<<
@@ -110859,7 +111038,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
       goto __pyx_L4;
     }
 
-    /* "src/lxml/parser.pxi":1224
+    /* "src/lxml/parser.pxi":1235
  *                 c_encoding = NULL
  *             else:
  *                 c_encoding = self._default_encoding             # <<<<<<<<<<<<<<
@@ -110867,12 +111046,12 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  *             py_buffer_len = python.PyBytes_GET_SIZE(data)
  */
     /*else*/ {
-      __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_self->__pyx_base._default_encoding); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_self->__pyx_base._default_encoding); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_v_c_encoding = __pyx_t_8;
     }
     __pyx_L4:;
 
-    /* "src/lxml/parser.pxi":1225
+    /* "src/lxml/parser.pxi":1236
  *             else:
  *                 c_encoding = self._default_encoding
  *             c_data = _cstr(data)             # <<<<<<<<<<<<<<
@@ -110881,7 +111060,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     __pyx_v_c_data = PyBytes_AS_STRING(__pyx_v_data);
 
-    /* "src/lxml/parser.pxi":1226
+    /* "src/lxml/parser.pxi":1237
  *                 c_encoding = self._default_encoding
  *             c_data = _cstr(data)
  *             py_buffer_len = python.PyBytes_GET_SIZE(data)             # <<<<<<<<<<<<<<
@@ -110890,7 +111069,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     __pyx_v_py_buffer_len = PyBytes_GET_SIZE(__pyx_v_data);
 
-    /* "src/lxml/parser.pxi":1220
+    /* "src/lxml/parser.pxi":1231
  *         cdef int error
  *         cdef bint recover = self._parse_options & xmlparser.XML_PARSE_RECOVER
  *         if isinstance(data, bytes):             # <<<<<<<<<<<<<<
@@ -110900,7 +111079,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":1227
+  /* "src/lxml/parser.pxi":1238
  *             c_data = _cstr(data)
  *             py_buffer_len = python.PyBytes_GET_SIZE(data)
  *         elif isinstance(data, unicode):             # <<<<<<<<<<<<<<
@@ -110911,7 +111090,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
   __pyx_t_7 = (__pyx_t_6 != 0);
   if (__pyx_t_7) {
 
-    /* "src/lxml/parser.pxi":1228
+    /* "src/lxml/parser.pxi":1239
  *             py_buffer_len = python.PyBytes_GET_SIZE(data)
  *         elif isinstance(data, unicode):
  *             if _UNICODE_ENCODING is NULL:             # <<<<<<<<<<<<<<
@@ -110921,20 +111100,20 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     __pyx_t_7 = ((__pyx_v_4lxml_5etree__UNICODE_ENCODING == NULL) != 0);
     if (__pyx_t_7) {
 
-      /* "src/lxml/parser.pxi":1229
+      /* "src/lxml/parser.pxi":1240
  *         elif isinstance(data, unicode):
  *             if _UNICODE_ENCODING is NULL:
  *                 raise ParserError, \             # <<<<<<<<<<<<<<
  *                     u"Unicode parsing is not supported on this platform"
  *             c_encoding = _UNICODE_ENCODING
  */
-      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ParserError); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ParserError); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_Raise(__pyx_t_1, __pyx_kp_u_Unicode_parsing_is_not_supported, 0, 0);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/parser.pxi":1228
+      /* "src/lxml/parser.pxi":1239
  *             py_buffer_len = python.PyBytes_GET_SIZE(data)
  *         elif isinstance(data, unicode):
  *             if _UNICODE_ENCODING is NULL:             # <<<<<<<<<<<<<<
@@ -110943,7 +111122,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     }
 
-    /* "src/lxml/parser.pxi":1231
+    /* "src/lxml/parser.pxi":1242
  *                 raise ParserError, \
  *                     u"Unicode parsing is not supported on this platform"
  *             c_encoding = _UNICODE_ENCODING             # <<<<<<<<<<<<<<
@@ -110952,7 +111131,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     __pyx_v_c_encoding = __pyx_v_4lxml_5etree__UNICODE_ENCODING;
 
-    /* "src/lxml/parser.pxi":1232
+    /* "src/lxml/parser.pxi":1243
  *                     u"Unicode parsing is not supported on this platform"
  *             c_encoding = _UNICODE_ENCODING
  *             c_data = python.PyUnicode_AS_DATA(data)             # <<<<<<<<<<<<<<
@@ -110961,7 +111140,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     __pyx_v_c_data = PyUnicode_AS_DATA(__pyx_v_data);
 
-    /* "src/lxml/parser.pxi":1233
+    /* "src/lxml/parser.pxi":1244
  *             c_encoding = _UNICODE_ENCODING
  *             c_data = python.PyUnicode_AS_DATA(data)
  *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(data)             # <<<<<<<<<<<<<<
@@ -110970,7 +111149,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     __pyx_v_py_buffer_len = PyUnicode_GET_DATA_SIZE(__pyx_v_data);
 
-    /* "src/lxml/parser.pxi":1227
+    /* "src/lxml/parser.pxi":1238
  *             c_data = _cstr(data)
  *             py_buffer_len = python.PyBytes_GET_SIZE(data)
  *         elif isinstance(data, unicode):             # <<<<<<<<<<<<<<
@@ -110980,7 +111159,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":1235
+  /* "src/lxml/parser.pxi":1246
  *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(data)
  *         else:
  *             raise TypeError, u"Parsing requires string data"             # <<<<<<<<<<<<<<
@@ -110989,23 +111168,23 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Parsing_requires_string_data, 0, 0);
-    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":1237
+  /* "src/lxml/parser.pxi":1248
  *             raise TypeError, u"Parsing requires string data"
  * 
  *         context = self._getPushParserContext()             # <<<<<<<<<<<<<<
  *         pctxt = context._c_ctxt
  *         error = 0
  */
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":1238
+  /* "src/lxml/parser.pxi":1249
  * 
  *         context = self._getPushParserContext()
  *         pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
@@ -111015,7 +111194,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
   __pyx_t_9 = __pyx_v_context->_c_ctxt;
   __pyx_v_pctxt = __pyx_t_9;
 
-  /* "src/lxml/parser.pxi":1239
+  /* "src/lxml/parser.pxi":1250
  *         context = self._getPushParserContext()
  *         pctxt = context._c_ctxt
  *         error = 0             # <<<<<<<<<<<<<<
@@ -111024,7 +111203,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
   __pyx_v_error = 0;
 
-  /* "src/lxml/parser.pxi":1240
+  /* "src/lxml/parser.pxi":1251
  *         pctxt = context._c_ctxt
  *         error = 0
  *         if not self._feed_parser_running:             # <<<<<<<<<<<<<<
@@ -111034,16 +111213,16 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
   __pyx_t_7 = ((!(__pyx_v_self->_feed_parser_running != 0)) != 0);
   if (__pyx_t_7) {
 
-    /* "src/lxml/parser.pxi":1241
+    /* "src/lxml/parser.pxi":1252
  *         error = 0
  *         if not self._feed_parser_running:
  *             context.prepare()             # <<<<<<<<<<<<<<
  *             self._feed_parser_running = 1
  *             c_filename = (_cstr(self._filename)
  */
-    __pyx_t_10 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":1242
+    /* "src/lxml/parser.pxi":1253
  *         if not self._feed_parser_running:
  *             context.prepare()
  *             self._feed_parser_running = 1             # <<<<<<<<<<<<<<
@@ -111052,7 +111231,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     __pyx_v_self->_feed_parser_running = 1;
 
-    /* "src/lxml/parser.pxi":1244
+    /* "src/lxml/parser.pxi":1255
  *             self._feed_parser_running = 1
  *             c_filename = (_cstr(self._filename)
  *                           if self._filename is not None else NULL)             # <<<<<<<<<<<<<<
@@ -111062,7 +111241,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     __pyx_t_7 = (__pyx_v_self->__pyx_base._filename != ((PyObject*)Py_None));
     if ((__pyx_t_7 != 0)) {
 
-      /* "src/lxml/parser.pxi":1243
+      /* "src/lxml/parser.pxi":1254
  *             context.prepare()
  *             self._feed_parser_running = 1
  *             c_filename = (_cstr(self._filename)             # <<<<<<<<<<<<<<
@@ -111075,7 +111254,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
 
-      /* "src/lxml/parser.pxi":1244
+      /* "src/lxml/parser.pxi":1255
  *             self._feed_parser_running = 1
  *             c_filename = (_cstr(self._filename)
  *                           if self._filename is not None else NULL)             # <<<<<<<<<<<<<<
@@ -111086,7 +111265,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     }
     __pyx_v_c_filename = __pyx_t_11;
 
-    /* "src/lxml/parser.pxi":1250
+    /* "src/lxml/parser.pxi":1261
  *             # however if we give it all we got, we'll have nothing for
  *             # *mlParseChunk() and things go wrong.
  *             buffer_len = 4 if py_buffer_len > 4 else <int>py_buffer_len             # <<<<<<<<<<<<<<
@@ -111100,7 +111279,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     }
     __pyx_v_buffer_len = __pyx_t_10;
 
-    /* "src/lxml/parser.pxi":1251
+    /* "src/lxml/parser.pxi":1262
  *             # *mlParseChunk() and things go wrong.
  *             buffer_len = 4 if py_buffer_len > 4 else <int>py_buffer_len
  *             if self._for_html:             # <<<<<<<<<<<<<<
@@ -111110,17 +111289,17 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     __pyx_t_7 = (__pyx_v_self->__pyx_base._for_html != 0);
     if (__pyx_t_7) {
 
-      /* "src/lxml/parser.pxi":1252
+      /* "src/lxml/parser.pxi":1263
  *             buffer_len = 4 if py_buffer_len > 4 else <int>py_buffer_len
  *             if self._for_html:
  *                 error = _htmlCtxtResetPush(             # <<<<<<<<<<<<<<
  *                     pctxt, c_data, buffer_len, c_filename, c_encoding,
  *                     self._parse_options)
  */
-      __pyx_t_10 = __pyx_f_4lxml_5etree__htmlCtxtResetPush(__pyx_v_pctxt, __pyx_v_c_data, __pyx_v_buffer_len, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->__pyx_base._parse_options); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __pyx_f_4lxml_5etree__htmlCtxtResetPush(__pyx_v_pctxt, __pyx_v_c_data, __pyx_v_buffer_len, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->__pyx_base._parse_options); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_v_error = __pyx_t_10;
 
-      /* "src/lxml/parser.pxi":1251
+      /* "src/lxml/parser.pxi":1262
  *             # *mlParseChunk() and things go wrong.
  *             buffer_len = 4 if py_buffer_len > 4 else <int>py_buffer_len
  *             if self._for_html:             # <<<<<<<<<<<<<<
@@ -111130,7 +111309,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
       goto __pyx_L7;
     }
 
-    /* "src/lxml/parser.pxi":1256
+    /* "src/lxml/parser.pxi":1267
  *                     self._parse_options)
  *             else:
  *                 xmlparser.xmlCtxtUseOptions(pctxt, self._parse_options)             # <<<<<<<<<<<<<<
@@ -111140,7 +111319,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     /*else*/ {
       xmlCtxtUseOptions(__pyx_v_pctxt, __pyx_v_self->__pyx_base._parse_options);
 
-      /* "src/lxml/parser.pxi":1257
+      /* "src/lxml/parser.pxi":1268
  *             else:
  *                 xmlparser.xmlCtxtUseOptions(pctxt, self._parse_options)
  *                 error = xmlparser.xmlCtxtResetPush(             # <<<<<<<<<<<<<<
@@ -111151,7 +111330,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     }
     __pyx_L7:;
 
-    /* "src/lxml/parser.pxi":1259
+    /* "src/lxml/parser.pxi":1270
  *                 error = xmlparser.xmlCtxtResetPush(
  *                     pctxt, c_data, buffer_len, c_filename, c_encoding)
  *             py_buffer_len -= buffer_len             # <<<<<<<<<<<<<<
@@ -111160,7 +111339,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     __pyx_v_py_buffer_len = (__pyx_v_py_buffer_len - __pyx_v_buffer_len);
 
-    /* "src/lxml/parser.pxi":1260
+    /* "src/lxml/parser.pxi":1271
  *                     pctxt, c_data, buffer_len, c_filename, c_encoding)
  *             py_buffer_len -= buffer_len
  *             c_data += buffer_len             # <<<<<<<<<<<<<<
@@ -111169,7 +111348,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     __pyx_v_c_data = (__pyx_v_c_data + __pyx_v_buffer_len);
 
-    /* "src/lxml/parser.pxi":1261
+    /* "src/lxml/parser.pxi":1272
  *             py_buffer_len -= buffer_len
  *             c_data += buffer_len
  *             if error:             # <<<<<<<<<<<<<<
@@ -111179,16 +111358,16 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     __pyx_t_7 = (__pyx_v_error != 0);
     if (__pyx_t_7) {
 
-      /* "src/lxml/parser.pxi":1262
+      /* "src/lxml/parser.pxi":1273
  *             c_data += buffer_len
  *             if error:
  *                 raise MemoryError()             # <<<<<<<<<<<<<<
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  * 
  */
-      PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/parser.pxi":1261
+      /* "src/lxml/parser.pxi":1272
  *             py_buffer_len -= buffer_len
  *             c_data += buffer_len
  *             if error:             # <<<<<<<<<<<<<<
@@ -111197,7 +111376,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     }
 
-    /* "src/lxml/parser.pxi":1263
+    /* "src/lxml/parser.pxi":1274
  *             if error:
  *                 raise MemoryError()
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)             # <<<<<<<<<<<<<<
@@ -111206,7 +111385,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_pctxt);
 
-    /* "src/lxml/parser.pxi":1240
+    /* "src/lxml/parser.pxi":1251
  *         pctxt = context._c_ctxt
  *         error = 0
  *         if not self._feed_parser_running:             # <<<<<<<<<<<<<<
@@ -111215,7 +111394,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":1267
+  /* "src/lxml/parser.pxi":1278
  *         #print pctxt.charset, 'NONE' if c_encoding is NULL else c_encoding
  * 
  *         fixup_error = 0             # <<<<<<<<<<<<<<
@@ -111224,7 +111403,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
   __pyx_v_fixup_error = 0;
 
-  /* "src/lxml/parser.pxi":1268
+  /* "src/lxml/parser.pxi":1279
  * 
  *         fixup_error = 0
  *         while py_buffer_len > 0 and (error == 0 or recover):             # <<<<<<<<<<<<<<
@@ -111249,7 +111428,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     __pyx_L11_bool_binop_done:;
     if (!__pyx_t_7) break;
 
-    /* "src/lxml/parser.pxi":1269
+    /* "src/lxml/parser.pxi":1280
  *         fixup_error = 0
  *         while py_buffer_len > 0 and (error == 0 or recover):
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -111263,7 +111442,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         #endif
         /*try:*/ {
 
-          /* "src/lxml/parser.pxi":1270
+          /* "src/lxml/parser.pxi":1281
  *         while py_buffer_len > 0 and (error == 0 or recover):
  *             with nogil:
  *                 if py_buffer_len > limits.INT_MAX:             # <<<<<<<<<<<<<<
@@ -111273,7 +111452,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
           __pyx_t_7 = ((__pyx_v_py_buffer_len > INT_MAX) != 0);
           if (__pyx_t_7) {
 
-            /* "src/lxml/parser.pxi":1271
+            /* "src/lxml/parser.pxi":1282
  *             with nogil:
  *                 if py_buffer_len > limits.INT_MAX:
  *                     buffer_len = limits.INT_MAX             # <<<<<<<<<<<<<<
@@ -111282,7 +111461,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
             __pyx_v_buffer_len = INT_MAX;
 
-            /* "src/lxml/parser.pxi":1270
+            /* "src/lxml/parser.pxi":1281
  *         while py_buffer_len > 0 and (error == 0 or recover):
  *             with nogil:
  *                 if py_buffer_len > limits.INT_MAX:             # <<<<<<<<<<<<<<
@@ -111292,7 +111471,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
             goto __pyx_L19;
           }
 
-          /* "src/lxml/parser.pxi":1273
+          /* "src/lxml/parser.pxi":1284
  *                     buffer_len = limits.INT_MAX
  *                 else:
  *                     buffer_len = <int>py_buffer_len             # <<<<<<<<<<<<<<
@@ -111304,7 +111483,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
           }
           __pyx_L19:;
 
-          /* "src/lxml/parser.pxi":1274
+          /* "src/lxml/parser.pxi":1285
  *                 else:
  *                     buffer_len = <int>py_buffer_len
  *                 if self._for_html:             # <<<<<<<<<<<<<<
@@ -111314,7 +111493,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
           __pyx_t_7 = (__pyx_v_self->__pyx_base._for_html != 0);
           if (__pyx_t_7) {
 
-            /* "src/lxml/parser.pxi":1275
+            /* "src/lxml/parser.pxi":1286
  *                     buffer_len = <int>py_buffer_len
  *                 if self._for_html:
  *                     c_node = pctxt.node  # last node where the parser stopped             # <<<<<<<<<<<<<<
@@ -111324,7 +111503,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
             __pyx_t_12 = __pyx_v_pctxt->node;
             __pyx_v_c_node = __pyx_t_12;
 
-            /* "src/lxml/parser.pxi":1276
+            /* "src/lxml/parser.pxi":1287
  *                 if self._for_html:
  *                     c_node = pctxt.node  # last node where the parser stopped
  *                     error = htmlparser.htmlParseChunk(pctxt, c_data, buffer_len, 0)             # <<<<<<<<<<<<<<
@@ -111333,7 +111512,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
             __pyx_v_error = htmlParseChunk(__pyx_v_pctxt, __pyx_v_c_data, __pyx_v_buffer_len, 0);
 
-            /* "src/lxml/parser.pxi":1278
+            /* "src/lxml/parser.pxi":1289
  *                     error = htmlparser.htmlParseChunk(pctxt, c_data, buffer_len, 0)
  *                     # and now for the fun part: move node names to the dict
  *                     if pctxt.myDoc:             # <<<<<<<<<<<<<<
@@ -111343,7 +111522,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
             __pyx_t_7 = (__pyx_v_pctxt->myDoc != 0);
             if (__pyx_t_7) {
 
-              /* "src/lxml/parser.pxi":1279
+              /* "src/lxml/parser.pxi":1290
  *                     # and now for the fun part: move node names to the dict
  *                     if pctxt.myDoc:
  *                         fixup_error = _fixHtmlDictSubtreeNames(             # <<<<<<<<<<<<<<
@@ -111352,7 +111531,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
               __pyx_v_fixup_error = __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(__pyx_v_pctxt->dict, __pyx_v_pctxt->myDoc, __pyx_v_c_node);
 
-              /* "src/lxml/parser.pxi":1281
+              /* "src/lxml/parser.pxi":1292
  *                         fixup_error = _fixHtmlDictSubtreeNames(
  *                             pctxt.dict, pctxt.myDoc, c_node)
  *                         if pctxt.myDoc.dict and pctxt.myDoc.dict is not pctxt.dict:             # <<<<<<<<<<<<<<
@@ -111370,7 +111549,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
               __pyx_L23_bool_binop_done:;
               if (__pyx_t_7) {
 
-                /* "src/lxml/parser.pxi":1282
+                /* "src/lxml/parser.pxi":1293
  *                             pctxt.dict, pctxt.myDoc, c_node)
  *                         if pctxt.myDoc.dict and pctxt.myDoc.dict is not pctxt.dict:
  *                             xmlparser.xmlDictFree(pctxt.myDoc.dict)             # <<<<<<<<<<<<<<
@@ -111379,7 +111558,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
                 xmlDictFree(__pyx_v_pctxt->myDoc->dict);
 
-                /* "src/lxml/parser.pxi":1283
+                /* "src/lxml/parser.pxi":1294
  *                         if pctxt.myDoc.dict and pctxt.myDoc.dict is not pctxt.dict:
  *                             xmlparser.xmlDictFree(pctxt.myDoc.dict)
  *                             pctxt.myDoc.dict = pctxt.dict             # <<<<<<<<<<<<<<
@@ -111389,7 +111568,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
                 __pyx_t_13 = __pyx_v_pctxt->dict;
                 __pyx_v_pctxt->myDoc->dict = __pyx_t_13;
 
-                /* "src/lxml/parser.pxi":1284
+                /* "src/lxml/parser.pxi":1295
  *                             xmlparser.xmlDictFree(pctxt.myDoc.dict)
  *                             pctxt.myDoc.dict = pctxt.dict
  *                             xmlparser.xmlDictReference(pctxt.dict)             # <<<<<<<<<<<<<<
@@ -111398,7 +111577,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
                 xmlDictReference(__pyx_v_pctxt->dict);
 
-                /* "src/lxml/parser.pxi":1281
+                /* "src/lxml/parser.pxi":1292
  *                         fixup_error = _fixHtmlDictSubtreeNames(
  *                             pctxt.dict, pctxt.myDoc, c_node)
  *                         if pctxt.myDoc.dict and pctxt.myDoc.dict is not pctxt.dict:             # <<<<<<<<<<<<<<
@@ -111407,7 +111586,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
               }
 
-              /* "src/lxml/parser.pxi":1278
+              /* "src/lxml/parser.pxi":1289
  *                     error = htmlparser.htmlParseChunk(pctxt, c_data, buffer_len, 0)
  *                     # and now for the fun part: move node names to the dict
  *                     if pctxt.myDoc:             # <<<<<<<<<<<<<<
@@ -111416,7 +111595,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
             }
 
-            /* "src/lxml/parser.pxi":1274
+            /* "src/lxml/parser.pxi":1285
  *                 else:
  *                     buffer_len = <int>py_buffer_len
  *                 if self._for_html:             # <<<<<<<<<<<<<<
@@ -111426,7 +111605,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
             goto __pyx_L20;
           }
 
-          /* "src/lxml/parser.pxi":1286
+          /* "src/lxml/parser.pxi":1297
  *                             xmlparser.xmlDictReference(pctxt.dict)
  *                 else:
  *                     error = xmlparser.xmlParseChunk(pctxt, c_data, buffer_len, 0)             # <<<<<<<<<<<<<<
@@ -111438,7 +111617,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
           }
           __pyx_L20:;
 
-          /* "src/lxml/parser.pxi":1287
+          /* "src/lxml/parser.pxi":1298
  *                 else:
  *                     error = xmlparser.xmlParseChunk(pctxt, c_data, buffer_len, 0)
  *                 py_buffer_len -= buffer_len             # <<<<<<<<<<<<<<
@@ -111447,7 +111626,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
           __pyx_v_py_buffer_len = (__pyx_v_py_buffer_len - __pyx_v_buffer_len);
 
-          /* "src/lxml/parser.pxi":1288
+          /* "src/lxml/parser.pxi":1299
  *                     error = xmlparser.xmlParseChunk(pctxt, c_data, buffer_len, 0)
  *                 py_buffer_len -= buffer_len
  *                 c_data += buffer_len             # <<<<<<<<<<<<<<
@@ -111457,7 +111636,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
           __pyx_v_c_data = (__pyx_v_c_data + __pyx_v_buffer_len);
         }
 
-        /* "src/lxml/parser.pxi":1269
+        /* "src/lxml/parser.pxi":1280
  *         fixup_error = 0
  *         while py_buffer_len > 0 and (error == 0 or recover):
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -111475,7 +111654,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         }
     }
 
-    /* "src/lxml/parser.pxi":1290
+    /* "src/lxml/parser.pxi":1301
  *                 c_data += buffer_len
  * 
  *             if fixup_error:             # <<<<<<<<<<<<<<
@@ -111485,16 +111664,16 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     __pyx_t_7 = (__pyx_v_fixup_error != 0);
     if (__pyx_t_7) {
 
-      /* "src/lxml/parser.pxi":1291
+      /* "src/lxml/parser.pxi":1302
  * 
  *             if fixup_error:
  *                 context.store_exception(MemoryError())             # <<<<<<<<<<<<<<
  * 
  *             if context._has_raised():
  */
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_context), __pyx_n_s_store_exception); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_context), __pyx_n_s_store_exception); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_builtin_MemoryError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_builtin_MemoryError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_5 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -111507,24 +111686,24 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         }
       }
       if (!__pyx_t_5) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_GOTREF(__pyx_t_1);
       } else {
-        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
         __Pyx_GIVEREF(__pyx_t_3);
         PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3);
         __pyx_t_3 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       }
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "src/lxml/parser.pxi":1290
+      /* "src/lxml/parser.pxi":1301
  *                 c_data += buffer_len
  * 
  *             if fixup_error:             # <<<<<<<<<<<<<<
@@ -111533,7 +111712,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     }
 
-    /* "src/lxml/parser.pxi":1293
+    /* "src/lxml/parser.pxi":1304
  *                 context.store_exception(MemoryError())
  * 
  *             if context._has_raised():             # <<<<<<<<<<<<<<
@@ -111543,7 +111722,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     __pyx_t_7 = (((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._has_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context)) != 0);
     if (__pyx_t_7) {
 
-      /* "src/lxml/parser.pxi":1295
+      /* "src/lxml/parser.pxi":1306
  *             if context._has_raised():
  *                 # propagate Python exceptions immediately
  *                 recover = 0             # <<<<<<<<<<<<<<
@@ -111552,7 +111731,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
       __pyx_v_recover = 0;
 
-      /* "src/lxml/parser.pxi":1296
+      /* "src/lxml/parser.pxi":1307
  *                 # propagate Python exceptions immediately
  *                 recover = 0
  *                 error = 1             # <<<<<<<<<<<<<<
@@ -111561,7 +111740,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
       __pyx_v_error = 1;
 
-      /* "src/lxml/parser.pxi":1297
+      /* "src/lxml/parser.pxi":1308
  *                 recover = 0
  *                 error = 1
  *                 break             # <<<<<<<<<<<<<<
@@ -111570,7 +111749,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
       goto __pyx_L10_break;
 
-      /* "src/lxml/parser.pxi":1293
+      /* "src/lxml/parser.pxi":1304
  *                 context.store_exception(MemoryError())
  * 
  *             if context._has_raised():             # <<<<<<<<<<<<<<
@@ -111579,7 +111758,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     }
 
-    /* "src/lxml/parser.pxi":1299
+    /* "src/lxml/parser.pxi":1310
  *                 break
  * 
  *             if error and not pctxt.replaceEntities and not pctxt.validate:             # <<<<<<<<<<<<<<
@@ -111603,14 +111782,14 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     __pyx_L28_bool_binop_done:;
     if (__pyx_t_7) {
 
-      /* "src/lxml/parser.pxi":1301
+      /* "src/lxml/parser.pxi":1312
  *             if error and not pctxt.replaceEntities and not pctxt.validate:
  *                 # in this mode, we ignore errors about undefined entities
  *                 for entry in context._error_log.filter_from_errors():             # <<<<<<<<<<<<<<
  *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                            entry.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  */
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_context->_error_log), __pyx_n_s_filter_from_errors); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_context->_error_log), __pyx_n_s_filter_from_errors); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_4 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -111623,10 +111802,10 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -111634,9 +111813,9 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_14 = 0;
         __pyx_t_15 = NULL;
       } else {
-        __pyx_t_14 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_15 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_15 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       for (;;) {
@@ -111644,17 +111823,17 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
           if (likely(PyList_CheckExact(__pyx_t_2))) {
             if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_2)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_1);
             #endif
           } else {
             if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_1);
             #endif
           }
@@ -111664,7 +111843,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              else {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             break;
           }
@@ -111673,24 +111852,24 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         __Pyx_XDECREF_SET(__pyx_v_entry, __pyx_t_1);
         __pyx_t_1 = 0;
 
-        /* "src/lxml/parser.pxi":1302
+        /* "src/lxml/parser.pxi":1313
  *                 # in this mode, we ignore errors about undefined entities
  *                 for entry in context._error_log.filter_from_errors():
  *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \             # <<<<<<<<<<<<<<
  *                            entry.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  *                         break
  */
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_entry, __pyx_n_s_type); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_entry, __pyx_n_s_type); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_WAR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_WAR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         if (__pyx_t_6) {
         } else {
@@ -111698,29 +111877,29 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
           goto __pyx_L34_bool_binop_done;
         }
 
-        /* "src/lxml/parser.pxi":1303
+        /* "src/lxml/parser.pxi":1314
  *                 for entry in context._error_log.filter_from_errors():
  *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                            entry.type != ErrorTypes.ERR_UNDECLARED_ENTITY:             # <<<<<<<<<<<<<<
  *                         break
  *                 else:
  */
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_entry, __pyx_n_s_type); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_entry, __pyx_n_s_type); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ERR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ERR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_t_7 = __pyx_t_6;
         __pyx_L34_bool_binop_done:;
 
-        /* "src/lxml/parser.pxi":1302
+        /* "src/lxml/parser.pxi":1313
  *                 # in this mode, we ignore errors about undefined entities
  *                 for entry in context._error_log.filter_from_errors():
  *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \             # <<<<<<<<<<<<<<
@@ -111729,7 +111908,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
         if (__pyx_t_7) {
 
-          /* "src/lxml/parser.pxi":1304
+          /* "src/lxml/parser.pxi":1315
  *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                            entry.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  *                         break             # <<<<<<<<<<<<<<
@@ -111738,7 +111917,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
           goto __pyx_L32_break;
 
-          /* "src/lxml/parser.pxi":1302
+          /* "src/lxml/parser.pxi":1313
  *                 # in this mode, we ignore errors about undefined entities
  *                 for entry in context._error_log.filter_from_errors():
  *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \             # <<<<<<<<<<<<<<
@@ -111747,7 +111926,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
         }
 
-        /* "src/lxml/parser.pxi":1301
+        /* "src/lxml/parser.pxi":1312
  *             if error and not pctxt.replaceEntities and not pctxt.validate:
  *                 # in this mode, we ignore errors about undefined entities
  *                 for entry in context._error_log.filter_from_errors():             # <<<<<<<<<<<<<<
@@ -111757,7 +111936,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
       }
       /*else*/ {
 
-        /* "src/lxml/parser.pxi":1306
+        /* "src/lxml/parser.pxi":1317
  *                         break
  *                 else:
  *                     error = 0             # <<<<<<<<<<<<<<
@@ -111767,7 +111946,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         __pyx_v_error = 0;
       }
 
-      /* "src/lxml/parser.pxi":1301
+      /* "src/lxml/parser.pxi":1312
  *             if error and not pctxt.replaceEntities and not pctxt.validate:
  *                 # in this mode, we ignore errors about undefined entities
  *                 for entry in context._error_log.filter_from_errors():             # <<<<<<<<<<<<<<
@@ -111777,7 +111956,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
       __pyx_L32_break:;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "src/lxml/parser.pxi":1299
+      /* "src/lxml/parser.pxi":1310
  *                 break
  * 
  *             if error and not pctxt.replaceEntities and not pctxt.validate:             # <<<<<<<<<<<<<<
@@ -111788,7 +111967,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
   }
   __pyx_L10_break:;
 
-  /* "src/lxml/parser.pxi":1308
+  /* "src/lxml/parser.pxi":1319
  *                     error = 0
  * 
  *         if not pctxt.wellFormed and pctxt.disableSAX and context._has_raised():             # <<<<<<<<<<<<<<
@@ -111812,7 +111991,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
   __pyx_L38_bool_binop_done:;
   if (__pyx_t_7) {
 
-    /* "src/lxml/parser.pxi":1310
+    /* "src/lxml/parser.pxi":1321
  *         if not pctxt.wellFormed and pctxt.disableSAX and context._has_raised():
  *             # propagate Python exceptions immediately
  *             recover = 0             # <<<<<<<<<<<<<<
@@ -111821,7 +112000,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     __pyx_v_recover = 0;
 
-    /* "src/lxml/parser.pxi":1311
+    /* "src/lxml/parser.pxi":1322
  *             # propagate Python exceptions immediately
  *             recover = 0
  *             error = 1             # <<<<<<<<<<<<<<
@@ -111830,7 +112009,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     __pyx_v_error = 1;
 
-    /* "src/lxml/parser.pxi":1308
+    /* "src/lxml/parser.pxi":1319
  *                     error = 0
  * 
  *         if not pctxt.wellFormed and pctxt.disableSAX and context._has_raised():             # <<<<<<<<<<<<<<
@@ -111839,7 +112018,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":1313
+  /* "src/lxml/parser.pxi":1324
  *             error = 1
  * 
  *         if fixup_error or not recover and (error or not pctxt.wellFormed):             # <<<<<<<<<<<<<<
@@ -111869,7 +112048,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
   __pyx_L42_bool_binop_done:;
   if (__pyx_t_7) {
 
-    /* "src/lxml/parser.pxi":1314
+    /* "src/lxml/parser.pxi":1325
  * 
  *         if fixup_error or not recover and (error or not pctxt.wellFormed):
  *             self._feed_parser_running = 0             # <<<<<<<<<<<<<<
@@ -111878,7 +112057,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     __pyx_v_self->_feed_parser_running = 0;
 
-    /* "src/lxml/parser.pxi":1315
+    /* "src/lxml/parser.pxi":1326
  *         if fixup_error or not recover and (error or not pctxt.wellFormed):
  *             self._feed_parser_running = 0
  *             try:             # <<<<<<<<<<<<<<
@@ -111887,19 +112066,19 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     /*try:*/ {
 
-      /* "src/lxml/parser.pxi":1316
+      /* "src/lxml/parser.pxi":1327
  *             self._feed_parser_running = 0
  *             try:
  *                 context._handleParseResult(self, pctxt.myDoc, None)             # <<<<<<<<<<<<<<
  *             finally:
  *                 context.cleanup()
  */
-      __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResult(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_pctxt->myDoc, Py_None); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L47_error;}
+      __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResult(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_pctxt->myDoc, Py_None); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L47_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     }
 
-    /* "src/lxml/parser.pxi":1318
+    /* "src/lxml/parser.pxi":1329
  *                 context._handleParseResult(self, pctxt.myDoc, None)
  *             finally:
  *                 context.cleanup()             # <<<<<<<<<<<<<<
@@ -111908,7 +112087,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     /*finally:*/ {
       /*normal exit:*/{
-        __pyx_t_10 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         goto __pyx_L48;
       }
       /*exception exit:*/{
@@ -111929,7 +112108,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         __Pyx_XGOTREF(__pyx_t_23);
         __pyx_t_10 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
         {
-          __pyx_t_24 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_24 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L50_error;}
+          __pyx_t_24 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_24 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L50_error;}
         }
         if (PY_MAJOR_VERSION >= 3) {
           __Pyx_XGIVEREF(__pyx_t_21);
@@ -111960,7 +112139,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
       __pyx_L48:;
     }
 
-    /* "src/lxml/parser.pxi":1313
+    /* "src/lxml/parser.pxi":1324
  *             error = 1
  * 
  *         if fixup_error or not recover and (error or not pctxt.wellFormed):             # <<<<<<<<<<<<<<
@@ -111969,7 +112148,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":1194
+  /* "src/lxml/parser.pxi":1205
  *             return self._getPushParserContext()._error_log.copy()
  * 
  *     cpdef feed(self, data):             # <<<<<<<<<<<<<<
@@ -112019,7 +112198,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("feed", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_5etree_11_FeedParser_feed(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree_11_FeedParser_feed(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -112036,7 +112215,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1320
+/* "src/lxml/parser.pxi":1331
  *                 context.cleanup()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
@@ -112079,7 +112258,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
   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 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1331; __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_11_FeedParser_3close)) {
       __Pyx_XDECREF(__pyx_r);
@@ -112095,10 +112274,10 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -112110,7 +112289,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "src/lxml/parser.pxi":1331
+  /* "src/lxml/parser.pxi":1342
  *         parser interface, all other usage is undefined.
  *         """
  *         if not self._feed_parser_running:             # <<<<<<<<<<<<<<
@@ -112120,24 +112299,24 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
   __pyx_t_5 = ((!(__pyx_v_self->_feed_parser_running != 0)) != 0);
   if (__pyx_t_5) {
 
-    /* "src/lxml/parser.pxi":1332
+    /* "src/lxml/parser.pxi":1343
  *         """
  *         if not self._feed_parser_running:
  *             raise XMLSyntaxError(u"no element found",             # <<<<<<<<<<<<<<
  *                                  xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0)
  * 
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
 
-    /* "src/lxml/parser.pxi":1333
+    /* "src/lxml/parser.pxi":1344
  *         if not self._feed_parser_running:
  *             raise XMLSyntaxError(u"no element found",
  *                                  xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0)             # <<<<<<<<<<<<<<
  * 
  *         context = self._getPushParserContext()
  */
-    __pyx_t_3 = __Pyx_PyInt_From_xmlParserErrors(XML_ERR_INTERNAL_ERROR); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyInt_From_xmlParserErrors(XML_ERR_INTERNAL_ERROR); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     __pyx_t_6 = 0;
@@ -112151,7 +112330,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_4) {
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -112168,15 +112347,15 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
     __Pyx_GIVEREF(__pyx_int_0);
     PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_int_0);
     __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":1331
+    /* "src/lxml/parser.pxi":1342
  *         parser interface, all other usage is undefined.
  *         """
  *         if not self._feed_parser_running:             # <<<<<<<<<<<<<<
@@ -112185,19 +112364,19 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
  */
   }
 
-  /* "src/lxml/parser.pxi":1335
+  /* "src/lxml/parser.pxi":1346
  *                                  xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0)
  * 
  *         context = self._getPushParserContext()             # <<<<<<<<<<<<<<
  *         pctxt = context._c_ctxt
  * 
  */
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":1336
+  /* "src/lxml/parser.pxi":1347
  * 
  *         context = self._getPushParserContext()
  *         pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
@@ -112207,7 +112386,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
   __pyx_t_8 = __pyx_v_context->_c_ctxt;
   __pyx_v_pctxt = __pyx_t_8;
 
-  /* "src/lxml/parser.pxi":1338
+  /* "src/lxml/parser.pxi":1349
  *         pctxt = context._c_ctxt
  * 
  *         self._feed_parser_running = 0             # <<<<<<<<<<<<<<
@@ -112216,7 +112395,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
  */
   __pyx_v_self->_feed_parser_running = 0;
 
-  /* "src/lxml/parser.pxi":1339
+  /* "src/lxml/parser.pxi":1350
  * 
  *         self._feed_parser_running = 0
  *         if self._for_html:             # <<<<<<<<<<<<<<
@@ -112226,7 +112405,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
   __pyx_t_5 = (__pyx_v_self->__pyx_base._for_html != 0);
   if (__pyx_t_5) {
 
-    /* "src/lxml/parser.pxi":1340
+    /* "src/lxml/parser.pxi":1351
  *         self._feed_parser_running = 0
  *         if self._for_html:
  *             htmlparser.htmlParseChunk(pctxt, NULL, 0, 1)             # <<<<<<<<<<<<<<
@@ -112235,7 +112414,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
  */
     htmlParseChunk(__pyx_v_pctxt, NULL, 0, 1);
 
-    /* "src/lxml/parser.pxi":1339
+    /* "src/lxml/parser.pxi":1350
  * 
  *         self._feed_parser_running = 0
  *         if self._for_html:             # <<<<<<<<<<<<<<
@@ -112245,7 +112424,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
     goto __pyx_L4;
   }
 
-  /* "src/lxml/parser.pxi":1342
+  /* "src/lxml/parser.pxi":1353
  *             htmlparser.htmlParseChunk(pctxt, NULL, 0, 1)
  *         else:
  *             xmlparser.xmlParseChunk(pctxt, NULL, 0, 1)             # <<<<<<<<<<<<<<
@@ -112257,7 +112436,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
   }
   __pyx_L4:;
 
-  /* "src/lxml/parser.pxi":1344
+  /* "src/lxml/parser.pxi":1355
  *             xmlparser.xmlParseChunk(pctxt, NULL, 0, 1)
  * 
  *         if (pctxt.recovery and not pctxt.disableSAX and             # <<<<<<<<<<<<<<
@@ -112277,7 +112456,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
     goto __pyx_L6_bool_binop_done;
   }
 
-  /* "src/lxml/parser.pxi":1345
+  /* "src/lxml/parser.pxi":1356
  * 
  *         if (pctxt.recovery and not pctxt.disableSAX and
  *                 isinstance(context, _SaxParserContext)):             # <<<<<<<<<<<<<<
@@ -112289,7 +112468,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
   __pyx_t_5 = __pyx_t_10;
   __pyx_L6_bool_binop_done:;
 
-  /* "src/lxml/parser.pxi":1344
+  /* "src/lxml/parser.pxi":1355
  *             xmlparser.xmlParseChunk(pctxt, NULL, 0, 1)
  * 
  *         if (pctxt.recovery and not pctxt.disableSAX and             # <<<<<<<<<<<<<<
@@ -112298,16 +112477,16 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
  */
   if (__pyx_t_5) {
 
-    /* "src/lxml/parser.pxi":1347
+    /* "src/lxml/parser.pxi":1358
  *                 isinstance(context, _SaxParserContext)):
  *             # apply any left-over 'end' events
  *             (<_SaxParserContext>context).flushEvents()             # <<<<<<<<<<<<<<
  * 
  *         try:
  */
-    __pyx_t_11 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_context)->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->flushEvents(((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_context)); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_context)->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->flushEvents(((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_context)); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":1344
+    /* "src/lxml/parser.pxi":1355
  *             xmlparser.xmlParseChunk(pctxt, NULL, 0, 1)
  * 
  *         if (pctxt.recovery and not pctxt.disableSAX and             # <<<<<<<<<<<<<<
@@ -112316,7 +112495,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
  */
   }
 
-  /* "src/lxml/parser.pxi":1349
+  /* "src/lxml/parser.pxi":1360
  *             (<_SaxParserContext>context).flushEvents()
  * 
  *         try:             # <<<<<<<<<<<<<<
@@ -112325,20 +112504,20 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
  */
   /*try:*/ {
 
-    /* "src/lxml/parser.pxi":1350
+    /* "src/lxml/parser.pxi":1361
  * 
  *         try:
  *             result = context._handleParseResult(self, pctxt.myDoc, None)             # <<<<<<<<<<<<<<
  *         finally:
  *             context.cleanup()
  */
-    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResult(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_pctxt->myDoc, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
+    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResult(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_pctxt->myDoc, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_result = __pyx_t_1;
     __pyx_t_1 = 0;
   }
 
-  /* "src/lxml/parser.pxi":1352
+  /* "src/lxml/parser.pxi":1363
  *             result = context._handleParseResult(self, pctxt.myDoc, None)
  *         finally:
  *             context.cleanup()             # <<<<<<<<<<<<<<
@@ -112347,7 +112526,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
  */
   /*finally:*/ {
     /*normal exit:*/{
-      __pyx_t_11 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L11;
     }
     /*exception exit:*/{
@@ -112368,7 +112547,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
       __Pyx_XGOTREF(__pyx_t_19);
       __pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
       {
-        __pyx_t_20 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_20 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
+        __pyx_t_20 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_20 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1363; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
       }
       if (PY_MAJOR_VERSION >= 3) {
         __Pyx_XGIVEREF(__pyx_t_17);
@@ -112399,7 +112578,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
     __pyx_L11:;
   }
 
-  /* "src/lxml/parser.pxi":1354
+  /* "src/lxml/parser.pxi":1365
  *             context.cleanup()
  * 
  *         if isinstance(result, _Document):             # <<<<<<<<<<<<<<
@@ -112410,7 +112589,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
   __pyx_t_10 = (__pyx_t_5 != 0);
   if (__pyx_t_10) {
 
-    /* "src/lxml/parser.pxi":1355
+    /* "src/lxml/parser.pxi":1366
  * 
  *         if isinstance(result, _Document):
  *             return (<_Document>result).getroot()             # <<<<<<<<<<<<<<
@@ -112418,13 +112597,13 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
  *             return result
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getroot(((struct LxmlDocument *)__pyx_v_result)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getroot(((struct LxmlDocument *)__pyx_v_result)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_r = __pyx_t_1;
     __pyx_t_1 = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":1354
+    /* "src/lxml/parser.pxi":1365
  *             context.cleanup()
  * 
  *         if isinstance(result, _Document):             # <<<<<<<<<<<<<<
@@ -112433,7 +112612,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
  */
   }
 
-  /* "src/lxml/parser.pxi":1357
+  /* "src/lxml/parser.pxi":1368
  *             return (<_Document>result).getroot()
  *         else:
  *             return result             # <<<<<<<<<<<<<<
@@ -112447,7 +112626,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
     goto __pyx_L0;
   }
 
-  /* "src/lxml/parser.pxi":1320
+  /* "src/lxml/parser.pxi":1331
  *                 context.cleanup()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
@@ -112495,7 +112674,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_2close(struct __pyx_obj_4lx
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("close", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_5etree_11_FeedParser_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree_11_FeedParser_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -112512,7 +112691,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_2close(struct __pyx_obj_4lx
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1360
+/* "src/lxml/parser.pxi":1371
  * 
  * 
  * cdef int _htmlCtxtResetPush(xmlparser.xmlParserCtxt* c_ctxt,             # <<<<<<<<<<<<<<
@@ -112527,7 +112706,7 @@ static int __pyx_f_4lxml_5etree__htmlCtxtResetPush(xmlParserCtxt *__pyx_v_c_ctxt
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_htmlCtxtResetPush", 0);
 
-  /* "src/lxml/parser.pxi":1366
+  /* "src/lxml/parser.pxi":1377
  *     cdef xmlparser.xmlParserInput* c_input_stream
  *     # libxml2 lacks an HTML push parser setup function
  *     error = xmlparser.xmlCtxtResetPush(             # <<<<<<<<<<<<<<
@@ -112536,7 +112715,7 @@ static int __pyx_f_4lxml_5etree__htmlCtxtResetPush(xmlParserCtxt *__pyx_v_c_ctxt
  */
   __pyx_v_error = xmlCtxtResetPush(__pyx_v_c_ctxt, __pyx_v_c_data, __pyx_v_buffer_len, __pyx_v_c_filename, __pyx_v_c_encoding);
 
-  /* "src/lxml/parser.pxi":1368
+  /* "src/lxml/parser.pxi":1379
  *     error = xmlparser.xmlCtxtResetPush(
  *         c_ctxt, c_data, buffer_len, c_filename, c_encoding)
  *     if error:             # <<<<<<<<<<<<<<
@@ -112546,7 +112725,7 @@ static int __pyx_f_4lxml_5etree__htmlCtxtResetPush(xmlParserCtxt *__pyx_v_c_ctxt
   __pyx_t_1 = (__pyx_v_error != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1369
+    /* "src/lxml/parser.pxi":1380
  *         c_ctxt, c_data, buffer_len, c_filename, c_encoding)
  *     if error:
  *         return error             # <<<<<<<<<<<<<<
@@ -112556,7 +112735,7 @@ static int __pyx_f_4lxml_5etree__htmlCtxtResetPush(xmlParserCtxt *__pyx_v_c_ctxt
     __pyx_r = __pyx_v_error;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":1368
+    /* "src/lxml/parser.pxi":1379
  *     error = xmlparser.xmlCtxtResetPush(
  *         c_ctxt, c_data, buffer_len, c_filename, c_encoding)
  *     if error:             # <<<<<<<<<<<<<<
@@ -112565,7 +112744,7 @@ static int __pyx_f_4lxml_5etree__htmlCtxtResetPush(xmlParserCtxt *__pyx_v_c_ctxt
  */
   }
 
-  /* "src/lxml/parser.pxi":1372
+  /* "src/lxml/parser.pxi":1383
  * 
  *     # fix libxml2 setup for HTML
  *     c_ctxt.progressive = 1             # <<<<<<<<<<<<<<
@@ -112574,7 +112753,7 @@ static int __pyx_f_4lxml_5etree__htmlCtxtResetPush(xmlParserCtxt *__pyx_v_c_ctxt
  */
   __pyx_v_c_ctxt->progressive = 1;
 
-  /* "src/lxml/parser.pxi":1373
+  /* "src/lxml/parser.pxi":1384
  *     # fix libxml2 setup for HTML
  *     c_ctxt.progressive = 1
  *     c_ctxt.html = 1             # <<<<<<<<<<<<<<
@@ -112583,7 +112762,7 @@ static int __pyx_f_4lxml_5etree__htmlCtxtResetPush(xmlParserCtxt *__pyx_v_c_ctxt
  */
   __pyx_v_c_ctxt->html = 1;
 
-  /* "src/lxml/parser.pxi":1374
+  /* "src/lxml/parser.pxi":1385
  *     c_ctxt.progressive = 1
  *     c_ctxt.html = 1
  *     htmlparser.htmlCtxtUseOptions(c_ctxt, parse_options)             # <<<<<<<<<<<<<<
@@ -112592,7 +112771,7 @@ static int __pyx_f_4lxml_5etree__htmlCtxtResetPush(xmlParserCtxt *__pyx_v_c_ctxt
  */
   htmlCtxtUseOptions(__pyx_v_c_ctxt, __pyx_v_parse_options);
 
-  /* "src/lxml/parser.pxi":1376
+  /* "src/lxml/parser.pxi":1387
  *     htmlparser.htmlCtxtUseOptions(c_ctxt, parse_options)
  * 
  *     return 0             # <<<<<<<<<<<<<<
@@ -112602,7 +112781,7 @@ static int __pyx_f_4lxml_5etree__htmlCtxtResetPush(xmlParserCtxt *__pyx_v_c_ctxt
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1360
+  /* "src/lxml/parser.pxi":1371
  * 
  * 
  * cdef int _htmlCtxtResetPush(xmlparser.xmlParserCtxt* c_ctxt,             # <<<<<<<<<<<<<<
@@ -112616,7 +112795,7 @@ static int __pyx_f_4lxml_5etree__htmlCtxtResetPush(xmlParserCtxt *__pyx_v_c_ctxt
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1437
+/* "src/lxml/parser.pxi":1448
  *     apply to the default parser.
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
@@ -112656,7 +112835,7 @@ static int __pyx_pw_4lxml_5etree_9XMLParser_1__init__(PyObject *__pyx_v_self, Py
     values[0] = ((PyObject *)Py_None);
     values[1] = ((PyObject *)Py_False);
 
-    /* "src/lxml/parser.pxi":1438
+    /* "src/lxml/parser.pxi":1449
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,
  *                  dtd_validation=False, load_dtd=False, no_network=True,             # <<<<<<<<<<<<<<
@@ -112667,7 +112846,7 @@ static int __pyx_pw_4lxml_5etree_9XMLParser_1__init__(PyObject *__pyx_v_self, Py
     values[3] = ((PyObject *)Py_False);
     values[4] = ((PyObject *)Py_True);
 
-    /* "src/lxml/parser.pxi":1439
+    /* "src/lxml/parser.pxi":1450
  *     def __init__(self, *, encoding=None, attribute_defaults=False,
  *                  dtd_validation=False, load_dtd=False, no_network=True,
  *                  ns_clean=False, recover=False, XMLSchema schema=None,             # <<<<<<<<<<<<<<
@@ -112678,7 +112857,7 @@ static int __pyx_pw_4lxml_5etree_9XMLParser_1__init__(PyObject *__pyx_v_self, Py
     values[6] = ((PyObject *)Py_False);
     values[7] = (PyObject *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)Py_None);
 
-    /* "src/lxml/parser.pxi":1440
+    /* "src/lxml/parser.pxi":1451
  *                  dtd_validation=False, load_dtd=False, no_network=True,
  *                  ns_clean=False, recover=False, XMLSchema schema=None,
  *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,             # <<<<<<<<<<<<<<
@@ -112689,7 +112868,7 @@ static int __pyx_pw_4lxml_5etree_9XMLParser_1__init__(PyObject *__pyx_v_self, Py
     values[9] = ((PyObject *)Py_False);
     values[10] = ((PyObject *)Py_True);
 
-    /* "src/lxml/parser.pxi":1441
+    /* "src/lxml/parser.pxi":1452
  *                  ns_clean=False, recover=False, XMLSchema schema=None,
  *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
  *                  remove_comments=False, remove_pis=False, strip_cdata=True,             # <<<<<<<<<<<<<<
@@ -112700,7 +112879,7 @@ static int __pyx_pw_4lxml_5etree_9XMLParser_1__init__(PyObject *__pyx_v_self, Py
     values[12] = ((PyObject *)Py_False);
     values[13] = ((PyObject *)Py_True);
 
-    /* "src/lxml/parser.pxi":1442
+    /* "src/lxml/parser.pxi":1453
  *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
  *                  remove_comments=False, remove_pis=False, strip_cdata=True,
  *                  collect_ids=True, target=None, compact=True):             # <<<<<<<<<<<<<<
@@ -112726,7 +112905,7 @@ static int __pyx_pw_4lxml_5etree_9XMLParser_1__init__(PyObject *__pyx_v_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1437; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 0) {
       goto __pyx_L5_argtuple_error;
@@ -112752,16 +112931,16 @@ static int __pyx_pw_4lxml_5etree_9XMLParser_1__init__(PyObject *__pyx_v_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1437; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.XMLParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema), __pyx_ptype_4lxml_5etree_XMLSchema, 1, "schema", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema), __pyx_ptype_4lxml_5etree_XMLSchema, 1, "schema", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_pf_4lxml_5etree_9XMLParser___init__(((struct __pyx_obj_4lxml_5etree_XMLParser *)__pyx_v_self), __pyx_v_encoding, __pyx_v_attribute_defaults, __pyx_v_dtd_validation, __pyx_v_load_dtd, __pyx_v_no_network, __pyx_v_ns_clean, __pyx_v_recover, __pyx_v_schema, __pyx_v_huge_tree, __pyx_v_remove_blank_text, __pyx_v_resolve_entities, __pyx_v_remove_comments, __pyx_v_remove_pis, __pyx_v_strip_cdata, __pyx_v_collect_ids, __pyx_v_target, __pyx_v_compact);
 
-  /* "src/lxml/parser.pxi":1437
+  /* "src/lxml/parser.pxi":1448
  *     apply to the default parser.
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
@@ -112795,7 +112974,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "src/lxml/parser.pxi":1444
+  /* "src/lxml/parser.pxi":1455
  *                  collect_ids=True, target=None, compact=True):
  *         cdef int parse_options
  *         parse_options = _XML_DEFAULT_PARSE_OPTIONS             # <<<<<<<<<<<<<<
@@ -112804,17 +112983,17 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   __pyx_v_parse_options = __pyx_v_4lxml_5etree__XML_DEFAULT_PARSE_OPTIONS;
 
-  /* "src/lxml/parser.pxi":1445
+  /* "src/lxml/parser.pxi":1456
  *         cdef int parse_options
  *         parse_options = _XML_DEFAULT_PARSE_OPTIONS
  *         if load_dtd:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  *         if dtd_validation:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_load_dtd); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_load_dtd); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1446
+    /* "src/lxml/parser.pxi":1457
  *         parse_options = _XML_DEFAULT_PARSE_OPTIONS
  *         if load_dtd:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD             # <<<<<<<<<<<<<<
@@ -112823,7 +113002,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
     __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_DTDLOAD);
 
-    /* "src/lxml/parser.pxi":1445
+    /* "src/lxml/parser.pxi":1456
  *         cdef int parse_options
  *         parse_options = _XML_DEFAULT_PARSE_OPTIONS
  *         if load_dtd:             # <<<<<<<<<<<<<<
@@ -112832,17 +113011,17 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1447
+  /* "src/lxml/parser.pxi":1458
  *         if load_dtd:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  *         if dtd_validation:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \
  *                             xmlparser.XML_PARSE_DTDLOAD
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_dtd_validation); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_dtd_validation); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1448
+    /* "src/lxml/parser.pxi":1459
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  *         if dtd_validation:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \             # <<<<<<<<<<<<<<
@@ -112851,7 +113030,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
     __pyx_v_parse_options = ((__pyx_v_parse_options | XML_PARSE_DTDVALID) | XML_PARSE_DTDLOAD);
 
-    /* "src/lxml/parser.pxi":1447
+    /* "src/lxml/parser.pxi":1458
  *         if load_dtd:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  *         if dtd_validation:             # <<<<<<<<<<<<<<
@@ -112860,17 +113039,17 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1450
+  /* "src/lxml/parser.pxi":1461
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \
  *                             xmlparser.XML_PARSE_DTDLOAD
  *         if attribute_defaults:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR
  *             if schema is None:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_attribute_defaults); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_attribute_defaults); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1451
+    /* "src/lxml/parser.pxi":1462
  *                             xmlparser.XML_PARSE_DTDLOAD
  *         if attribute_defaults:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR             # <<<<<<<<<<<<<<
@@ -112879,7 +113058,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
     __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_DTDATTR);
 
-    /* "src/lxml/parser.pxi":1452
+    /* "src/lxml/parser.pxi":1463
  *         if attribute_defaults:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR
  *             if schema is None:             # <<<<<<<<<<<<<<
@@ -112890,7 +113069,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":1453
+      /* "src/lxml/parser.pxi":1464
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR
  *             if schema is None:
  *                 parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD             # <<<<<<<<<<<<<<
@@ -112899,7 +113078,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
       __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_DTDLOAD);
 
-      /* "src/lxml/parser.pxi":1452
+      /* "src/lxml/parser.pxi":1463
  *         if attribute_defaults:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR
  *             if schema is None:             # <<<<<<<<<<<<<<
@@ -112908,7 +113087,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
     }
 
-    /* "src/lxml/parser.pxi":1450
+    /* "src/lxml/parser.pxi":1461
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \
  *                             xmlparser.XML_PARSE_DTDLOAD
  *         if attribute_defaults:             # <<<<<<<<<<<<<<
@@ -112917,17 +113096,17 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1454
+  /* "src/lxml/parser.pxi":1465
  *             if schema is None:
  *                 parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  *         if ns_clean:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN
  *         if recover:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ns_clean); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ns_clean); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1455
+    /* "src/lxml/parser.pxi":1466
  *                 parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  *         if ns_clean:
  *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN             # <<<<<<<<<<<<<<
@@ -112936,7 +113115,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
     __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_NSCLEAN);
 
-    /* "src/lxml/parser.pxi":1454
+    /* "src/lxml/parser.pxi":1465
  *             if schema is None:
  *                 parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  *         if ns_clean:             # <<<<<<<<<<<<<<
@@ -112945,17 +113124,17 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1456
+  /* "src/lxml/parser.pxi":1467
  *         if ns_clean:
  *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN
  *         if recover:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER
  *         if remove_blank_text:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_recover); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_recover); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1457
+    /* "src/lxml/parser.pxi":1468
  *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN
  *         if recover:
  *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER             # <<<<<<<<<<<<<<
@@ -112964,7 +113143,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
     __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_RECOVER);
 
-    /* "src/lxml/parser.pxi":1456
+    /* "src/lxml/parser.pxi":1467
  *         if ns_clean:
  *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN
  *         if recover:             # <<<<<<<<<<<<<<
@@ -112973,17 +113152,17 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1458
+  /* "src/lxml/parser.pxi":1469
  *         if recover:
  *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER
  *         if remove_blank_text:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
  *         if huge_tree:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_remove_blank_text); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_remove_blank_text); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1459
+    /* "src/lxml/parser.pxi":1470
  *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER
  *         if remove_blank_text:
  *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS             # <<<<<<<<<<<<<<
@@ -112992,7 +113171,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
     __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_NOBLANKS);
 
-    /* "src/lxml/parser.pxi":1458
+    /* "src/lxml/parser.pxi":1469
  *         if recover:
  *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER
  *         if remove_blank_text:             # <<<<<<<<<<<<<<
@@ -113001,17 +113180,17 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1460
+  /* "src/lxml/parser.pxi":1471
  *         if remove_blank_text:
  *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
  *         if huge_tree:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
  *         if not no_network:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_huge_tree); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_huge_tree); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1461
+    /* "src/lxml/parser.pxi":1472
  *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
  *         if huge_tree:
  *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE             # <<<<<<<<<<<<<<
@@ -113020,7 +113199,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
     __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_HUGE);
 
-    /* "src/lxml/parser.pxi":1460
+    /* "src/lxml/parser.pxi":1471
  *         if remove_blank_text:
  *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
  *         if huge_tree:             # <<<<<<<<<<<<<<
@@ -113029,18 +113208,18 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1462
+  /* "src/lxml/parser.pxi":1473
  *         if huge_tree:
  *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
  *         if not no_network:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
  *         if not compact:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_no_network); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_no_network); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_1 = ((!__pyx_t_2) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1463
+    /* "src/lxml/parser.pxi":1474
  *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
  *         if not no_network:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET             # <<<<<<<<<<<<<<
@@ -113049,7 +113228,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
     __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_NONET);
 
-    /* "src/lxml/parser.pxi":1462
+    /* "src/lxml/parser.pxi":1473
  *         if huge_tree:
  *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
  *         if not no_network:             # <<<<<<<<<<<<<<
@@ -113058,18 +113237,18 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1464
+  /* "src/lxml/parser.pxi":1475
  *         if not no_network:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
  *         if not compact:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
  *         if not resolve_entities:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_compact); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_compact); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = ((!__pyx_t_1) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1465
+    /* "src/lxml/parser.pxi":1476
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
  *         if not compact:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT             # <<<<<<<<<<<<<<
@@ -113078,7 +113257,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
     __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_COMPACT);
 
-    /* "src/lxml/parser.pxi":1464
+    /* "src/lxml/parser.pxi":1475
  *         if not no_network:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
  *         if not compact:             # <<<<<<<<<<<<<<
@@ -113087,18 +113266,18 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1466
+  /* "src/lxml/parser.pxi":1477
  *         if not compact:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
  *         if not resolve_entities:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
  *         if not strip_cdata:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_resolve_entities); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_resolve_entities); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_1 = ((!__pyx_t_2) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1467
+    /* "src/lxml/parser.pxi":1478
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
  *         if not resolve_entities:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT             # <<<<<<<<<<<<<<
@@ -113107,7 +113286,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
     __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_NOENT);
 
-    /* "src/lxml/parser.pxi":1466
+    /* "src/lxml/parser.pxi":1477
  *         if not compact:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
  *         if not resolve_entities:             # <<<<<<<<<<<<<<
@@ -113116,18 +113295,18 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1468
+  /* "src/lxml/parser.pxi":1479
  *         if not resolve_entities:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
  *         if not strip_cdata:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_strip_cdata); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_strip_cdata); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = ((!__pyx_t_1) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1469
+    /* "src/lxml/parser.pxi":1480
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
  *         if not strip_cdata:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA             # <<<<<<<<<<<<<<
@@ -113136,7 +113315,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
     __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_NOCDATA);
 
-    /* "src/lxml/parser.pxi":1468
+    /* "src/lxml/parser.pxi":1479
  *         if not resolve_entities:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
  *         if not strip_cdata:             # <<<<<<<<<<<<<<
@@ -113145,19 +113324,19 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1471
+  /* "src/lxml/parser.pxi":1482
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA
  * 
  *         _BaseParser.__init__(self, parse_options, 0, schema,             # <<<<<<<<<<<<<<
  *                              remove_comments, remove_pis, strip_cdata,
  *                              collect_ids, target, encoding)
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser), __pyx_n_s_init); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser), __pyx_n_s_init); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_parse_options); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_parse_options); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
 
-  /* "src/lxml/parser.pxi":1473
+  /* "src/lxml/parser.pxi":1484
  *         _BaseParser.__init__(self, parse_options, 0, schema,
  *                              remove_comments, remove_pis, strip_cdata,
  *                              collect_ids, target, encoding)             # <<<<<<<<<<<<<<
@@ -113176,7 +113355,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
       __pyx_t_7 = 1;
     }
   }
-  __pyx_t_8 = PyTuple_New(10+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyTuple_New(10+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   if (__pyx_t_6) {
     __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
@@ -113211,13 +113390,13 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
   __Pyx_GIVEREF(__pyx_v_encoding);
   PyTuple_SET_ITEM(__pyx_t_8, 9+__pyx_t_7, __pyx_v_encoding);
   __pyx_t_5 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1437
+  /* "src/lxml/parser.pxi":1448
  *     apply to the default parser.
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
@@ -113241,7 +113420,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1494
+/* "src/lxml/parser.pxi":1505
  *     source, you can pass the ``base_url``.
  *     """
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):             # <<<<<<<<<<<<<<
@@ -113294,7 +113473,7 @@ static int __pyx_pw_4lxml_5etree_13XMLPullParser_1__init__(PyObject *__pyx_v_sel
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1505; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -113309,7 +113488,7 @@ static int __pyx_pw_4lxml_5etree_13XMLPullParser_1__init__(PyObject *__pyx_v_sel
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1505; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
   __Pyx_AddTraceback("lxml.etree.XMLPullParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -113338,27 +113517,27 @@ static int __pyx_pf_4lxml_5etree_13XMLPullParser___init__(struct __pyx_obj_4lxml
   __Pyx_RefNannySetupContext("__init__", 0);
   __Pyx_INCREF(__pyx_v_events);
 
-  /* "src/lxml/parser.pxi":1495
+  /* "src/lxml/parser.pxi":1506
  *     """
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):
  *         XMLParser.__init__(self, **kwargs)             # <<<<<<<<<<<<<<
  *         if events is None:
  *             events = ('end',)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_XMLParser), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_XMLParser), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1506; __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[6]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
   PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self));
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1496
+  /* "src/lxml/parser.pxi":1507
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):
  *         XMLParser.__init__(self, **kwargs)
  *         if events is None:             # <<<<<<<<<<<<<<
@@ -113369,17 +113548,17 @@ static int __pyx_pf_4lxml_5etree_13XMLPullParser___init__(struct __pyx_obj_4lxml
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
 
-    /* "src/lxml/parser.pxi":1497
+    /* "src/lxml/parser.pxi":1508
  *         XMLParser.__init__(self, **kwargs)
  *         if events is None:
  *             events = ('end',)             # <<<<<<<<<<<<<<
  *         self._setBaseURL(base_url)
  *         self._collectEvents(events, tag)
  */
-    __Pyx_INCREF(__pyx_tuple__61);
-    __Pyx_DECREF_SET(__pyx_v_events, __pyx_tuple__61);
+    __Pyx_INCREF(__pyx_tuple__62);
+    __Pyx_DECREF_SET(__pyx_v_events, __pyx_tuple__62);
 
-    /* "src/lxml/parser.pxi":1496
+    /* "src/lxml/parser.pxi":1507
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):
  *         XMLParser.__init__(self, **kwargs)
  *         if events is None:             # <<<<<<<<<<<<<<
@@ -113388,29 +113567,29 @@ static int __pyx_pf_4lxml_5etree_13XMLPullParser___init__(struct __pyx_obj_4lxml
  */
   }
 
-  /* "src/lxml/parser.pxi":1498
+  /* "src/lxml/parser.pxi":1509
  *         if events is None:
  *             events = ('end',)
  *         self._setBaseURL(base_url)             # <<<<<<<<<<<<<<
  *         self._collectEvents(events, tag)
  * 
  */
-  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._setBaseURL(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_base_url); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._setBaseURL(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_base_url); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1499
+  /* "src/lxml/parser.pxi":1510
  *             events = ('end',)
  *         self._setBaseURL(base_url)
  *         self._collectEvents(events, tag)             # <<<<<<<<<<<<<<
  * 
  *     def read_events(self):
  */
-  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._collectEvents(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._collectEvents(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1494
+  /* "src/lxml/parser.pxi":1505
  *     source, you can pass the ``base_url``.
  *     """
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):             # <<<<<<<<<<<<<<
@@ -113433,7 +113612,7 @@ static int __pyx_pf_4lxml_5etree_13XMLPullParser___init__(struct __pyx_obj_4lxml
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1501
+/* "src/lxml/parser.pxi":1512
  *         self._collectEvents(events, tag)
  * 
  *     def read_events(self):             # <<<<<<<<<<<<<<
@@ -113463,7 +113642,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XMLPullParser_2read_events(struct __pyx
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("read_events", 0);
 
-  /* "src/lxml/parser.pxi":1502
+  /* "src/lxml/parser.pxi":1513
  * 
  *     def read_events(self):
  *         return (<_SaxParserContext?>self._getPushParserContext()).events_iterator             # <<<<<<<<<<<<<<
@@ -113471,15 +113650,15 @@ static PyObject *__pyx_pf_4lxml_5etree_13XMLPullParser_2read_events(struct __pyx
  * 
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__SaxParserContext)))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__SaxParserContext)))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_1)->events_iterator));
   __pyx_r = ((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_1)->events_iterator);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1501
+  /* "src/lxml/parser.pxi":1512
  *         self._collectEvents(events, tag)
  * 
  *     def read_events(self):             # <<<<<<<<<<<<<<
@@ -113498,7 +113677,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XMLPullParser_2read_events(struct __pyx
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1520
+/* "src/lxml/parser.pxi":1531
  *     and thus ignores comments and processing instructions.
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
@@ -113537,7 +113716,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
     values[0] = ((PyObject *)Py_None);
     values[1] = ((PyObject *)Py_False);
 
-    /* "src/lxml/parser.pxi":1521
+    /* "src/lxml/parser.pxi":1532
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,
  *                  dtd_validation=False, load_dtd=False, no_network=True,             # <<<<<<<<<<<<<<
@@ -113548,7 +113727,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
     values[3] = ((PyObject *)Py_False);
     values[4] = ((PyObject *)Py_True);
 
-    /* "src/lxml/parser.pxi":1522
+    /* "src/lxml/parser.pxi":1533
  *     def __init__(self, *, encoding=None, attribute_defaults=False,
  *                  dtd_validation=False, load_dtd=False, no_network=True,
  *                  ns_clean=False, recover=False, schema=None,             # <<<<<<<<<<<<<<
@@ -113559,7 +113738,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
     values[6] = ((PyObject *)Py_False);
     values[7] = ((PyObject *)Py_None);
 
-    /* "src/lxml/parser.pxi":1523
+    /* "src/lxml/parser.pxi":1534
  *                  dtd_validation=False, load_dtd=False, no_network=True,
  *                  ns_clean=False, recover=False, schema=None,
  *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,             # <<<<<<<<<<<<<<
@@ -113570,7 +113749,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
     values[9] = ((PyObject *)Py_False);
     values[10] = ((PyObject *)Py_True);
 
-    /* "src/lxml/parser.pxi":1524
+    /* "src/lxml/parser.pxi":1535
  *                  ns_clean=False, recover=False, schema=None,
  *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
  *                  remove_comments=True, remove_pis=True, strip_cdata=True,             # <<<<<<<<<<<<<<
@@ -113581,7 +113760,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
     values[12] = ((PyObject *)Py_True);
     values[13] = ((PyObject *)Py_True);
 
-    /* "src/lxml/parser.pxi":1525
+    /* "src/lxml/parser.pxi":1536
  *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
  *                  remove_comments=True, remove_pis=True, strip_cdata=True,
  *                  target=None, compact=True):             # <<<<<<<<<<<<<<
@@ -113606,7 +113785,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1520; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1531; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 0) {
       goto __pyx_L5_argtuple_error;
@@ -113631,7 +113810,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1520; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1531; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.ETCompatXMLParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -113639,7 +113818,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_5etree_17ETCompatXMLParser___init__(((struct __pyx_obj_4lxml_5etree_ETCompatXMLParser *)__pyx_v_self), __pyx_v_encoding, __pyx_v_attribute_defaults, __pyx_v_dtd_validation, __pyx_v_load_dtd, __pyx_v_no_network, __pyx_v_ns_clean, __pyx_v_recover, __pyx_v_schema, __pyx_v_huge_tree, __pyx_v_remove_blank_text, __pyx_v_resolve_entities, __pyx_v_remove_comments, __pyx_v_remove_pis, __pyx_v_strip_cdata, __pyx_v_target, __pyx_v_compact);
 
-  /* "src/lxml/parser.pxi":1520
+  /* "src/lxml/parser.pxi":1531
  *     and thus ignores comments and processing instructions.
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
@@ -113664,182 +113843,182 @@ static int __pyx_pf_4lxml_5etree_17ETCompatXMLParser___init__(struct __pyx_obj_4
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "src/lxml/parser.pxi":1526
+  /* "src/lxml/parser.pxi":1537
  *                  remove_comments=True, remove_pis=True, strip_cdata=True,
  *                  target=None, compact=True):
  *         XMLParser.__init__(self,             # <<<<<<<<<<<<<<
  *                            attribute_defaults=attribute_defaults,
  *                            dtd_validation=dtd_validation,
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_XMLParser), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_XMLParser), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1537; __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[6]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
   PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self));
 
-  /* "src/lxml/parser.pxi":1527
+  /* "src/lxml/parser.pxi":1538
  *                  target=None, compact=True):
  *         XMLParser.__init__(self,
  *                            attribute_defaults=attribute_defaults,             # <<<<<<<<<<<<<<
  *                            dtd_validation=dtd_validation,
  *                            load_dtd=load_dtd,
  */
-  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_attribute_defaults, __pyx_v_attribute_defaults) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_attribute_defaults, __pyx_v_attribute_defaults) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1528
+  /* "src/lxml/parser.pxi":1539
  *         XMLParser.__init__(self,
  *                            attribute_defaults=attribute_defaults,
  *                            dtd_validation=dtd_validation,             # <<<<<<<<<<<<<<
  *                            load_dtd=load_dtd,
  *                            no_network=no_network,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtd_validation, __pyx_v_dtd_validation) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtd_validation, __pyx_v_dtd_validation) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1529
+  /* "src/lxml/parser.pxi":1540
  *                            attribute_defaults=attribute_defaults,
  *                            dtd_validation=dtd_validation,
  *                            load_dtd=load_dtd,             # <<<<<<<<<<<<<<
  *                            no_network=no_network,
  *                            ns_clean=ns_clean,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_load_dtd, __pyx_v_load_dtd) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_load_dtd, __pyx_v_load_dtd) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1530
+  /* "src/lxml/parser.pxi":1541
  *                            dtd_validation=dtd_validation,
  *                            load_dtd=load_dtd,
  *                            no_network=no_network,             # <<<<<<<<<<<<<<
  *                            ns_clean=ns_clean,
  *                            recover=recover,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_no_network, __pyx_v_no_network) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_no_network, __pyx_v_no_network) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1531
+  /* "src/lxml/parser.pxi":1542
  *                            load_dtd=load_dtd,
  *                            no_network=no_network,
  *                            ns_clean=ns_clean,             # <<<<<<<<<<<<<<
  *                            recover=recover,
  *                            remove_blank_text=remove_blank_text,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_ns_clean, __pyx_v_ns_clean) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_ns_clean, __pyx_v_ns_clean) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1532
+  /* "src/lxml/parser.pxi":1543
  *                            no_network=no_network,
  *                            ns_clean=ns_clean,
  *                            recover=recover,             # <<<<<<<<<<<<<<
  *                            remove_blank_text=remove_blank_text,
  *                            huge_tree=huge_tree,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recover, __pyx_v_recover) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recover, __pyx_v_recover) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1533
+  /* "src/lxml/parser.pxi":1544
  *                            ns_clean=ns_clean,
  *                            recover=recover,
  *                            remove_blank_text=remove_blank_text,             # <<<<<<<<<<<<<<
  *                            huge_tree=huge_tree,
  *                            compact=compact,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_blank_text, __pyx_v_remove_blank_text) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_blank_text, __pyx_v_remove_blank_text) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1534
+  /* "src/lxml/parser.pxi":1545
  *                            recover=recover,
  *                            remove_blank_text=remove_blank_text,
  *                            huge_tree=huge_tree,             # <<<<<<<<<<<<<<
  *                            compact=compact,
  *                            resolve_entities=resolve_entities,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_huge_tree, __pyx_v_huge_tree) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_huge_tree, __pyx_v_huge_tree) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1535
+  /* "src/lxml/parser.pxi":1546
  *                            remove_blank_text=remove_blank_text,
  *                            huge_tree=huge_tree,
  *                            compact=compact,             # <<<<<<<<<<<<<<
  *                            resolve_entities=resolve_entities,
  *                            remove_comments=remove_comments,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_compact, __pyx_v_compact) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_compact, __pyx_v_compact) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1536
+  /* "src/lxml/parser.pxi":1547
  *                            huge_tree=huge_tree,
  *                            compact=compact,
  *                            resolve_entities=resolve_entities,             # <<<<<<<<<<<<<<
  *                            remove_comments=remove_comments,
  *                            remove_pis=remove_pis,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_resolve_entities, __pyx_v_resolve_entities) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_resolve_entities, __pyx_v_resolve_entities) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1537
+  /* "src/lxml/parser.pxi":1548
  *                            compact=compact,
  *                            resolve_entities=resolve_entities,
  *                            remove_comments=remove_comments,             # <<<<<<<<<<<<<<
  *                            remove_pis=remove_pis,
  *                            strip_cdata=strip_cdata,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_comments, __pyx_v_remove_comments) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_comments, __pyx_v_remove_comments) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1538
+  /* "src/lxml/parser.pxi":1549
  *                            resolve_entities=resolve_entities,
  *                            remove_comments=remove_comments,
  *                            remove_pis=remove_pis,             # <<<<<<<<<<<<<<
  *                            strip_cdata=strip_cdata,
  *                            target=target,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_pis, __pyx_v_remove_pis) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_pis, __pyx_v_remove_pis) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1539
+  /* "src/lxml/parser.pxi":1550
  *                            remove_comments=remove_comments,
  *                            remove_pis=remove_pis,
  *                            strip_cdata=strip_cdata,             # <<<<<<<<<<<<<<
  *                            target=target,
  *                            encoding=encoding,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_strip_cdata, __pyx_v_strip_cdata) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_strip_cdata, __pyx_v_strip_cdata) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1540
+  /* "src/lxml/parser.pxi":1551
  *                            remove_pis=remove_pis,
  *                            strip_cdata=strip_cdata,
  *                            target=target,             # <<<<<<<<<<<<<<
  *                            encoding=encoding,
  *                            schema=schema)
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_target, __pyx_v_target) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_target, __pyx_v_target) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1541
+  /* "src/lxml/parser.pxi":1552
  *                            strip_cdata=strip_cdata,
  *                            target=target,
  *                            encoding=encoding,             # <<<<<<<<<<<<<<
  *                            schema=schema)
  * 
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_encoding, __pyx_v_encoding) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_encoding, __pyx_v_encoding) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1542
+  /* "src/lxml/parser.pxi":1553
  *                            target=target,
  *                            encoding=encoding,
  *                            schema=schema)             # <<<<<<<<<<<<<<
  * 
  * # ET 1.2 compatible name
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_schema, __pyx_v_schema) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_schema, __pyx_v_schema) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1526
+  /* "src/lxml/parser.pxi":1537
  *                  remove_comments=True, remove_pis=True, strip_cdata=True,
  *                  target=None, compact=True):
  *         XMLParser.__init__(self,             # <<<<<<<<<<<<<<
  *                            attribute_defaults=attribute_defaults,
  *                            dtd_validation=dtd_validation,
  */
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "src/lxml/parser.pxi":1520
+  /* "src/lxml/parser.pxi":1531
  *     and thus ignores comments and processing instructions.
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
@@ -113862,7 +114041,7 @@ static int __pyx_pf_4lxml_5etree_17ETCompatXMLParser___init__(struct __pyx_obj_4
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1553
+/* "src/lxml/parser.pxi":1564
  * __GLOBAL_PARSER_CONTEXT.setDefaultParser(__DEFAULT_XML_PARSER)
  * 
  * def set_default_parser(_BaseParser parser=None):             # <<<<<<<<<<<<<<
@@ -113903,7 +114082,7 @@ static PyObject *__pyx_pw_4lxml_5etree_43set_default_parser(PyObject *__pyx_self
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_default_parser") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_default_parser") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -113916,13 +114095,13 @@ static PyObject *__pyx_pw_4lxml_5etree_43set_default_parser(PyObject *__pyx_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("set_default_parser", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("set_default_parser", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.set_default_parser", __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[6]; __pyx_lineno = 1553; __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[6]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_pf_4lxml_5etree_42set_default_parser(__pyx_self, __pyx_v_parser);
 
   /* function exit code */
@@ -113942,7 +114121,7 @@ static PyObject *__pyx_pf_4lxml_5etree_42set_default_parser(CYTHON_UNUSED PyObje
   __Pyx_RefNannySetupContext("set_default_parser", 0);
   __Pyx_INCREF((PyObject *)__pyx_v_parser);
 
-  /* "src/lxml/parser.pxi":1565
+  /* "src/lxml/parser.pxi":1576
  *     parser for each thread explicitly or use a parser pool.
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -113953,7 +114132,7 @@ static PyObject *__pyx_pf_4lxml_5etree_42set_default_parser(CYTHON_UNUSED PyObje
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1566
+    /* "src/lxml/parser.pxi":1577
  *     """
  *     if parser is None:
  *         parser = __DEFAULT_XML_PARSER             # <<<<<<<<<<<<<<
@@ -113963,7 +114142,7 @@ static PyObject *__pyx_pf_4lxml_5etree_42set_default_parser(CYTHON_UNUSED PyObje
     __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER));
     __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER));
 
-    /* "src/lxml/parser.pxi":1565
+    /* "src/lxml/parser.pxi":1576
  *     parser for each thread explicitly or use a parser pool.
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -113972,7 +114151,7 @@ static PyObject *__pyx_pf_4lxml_5etree_42set_default_parser(CYTHON_UNUSED PyObje
  */
   }
 
-  /* "src/lxml/parser.pxi":1567
+  /* "src/lxml/parser.pxi":1578
  *     if parser is None:
  *         parser = __DEFAULT_XML_PARSER
  *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)             # <<<<<<<<<<<<<<
@@ -113981,7 +114160,7 @@ static PyObject *__pyx_pf_4lxml_5etree_42set_default_parser(CYTHON_UNUSED PyObje
  */
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_setDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_parser);
 
-  /* "src/lxml/parser.pxi":1553
+  /* "src/lxml/parser.pxi":1564
  * __GLOBAL_PARSER_CONTEXT.setDefaultParser(__DEFAULT_XML_PARSER)
  * 
  * def set_default_parser(_BaseParser parser=None):             # <<<<<<<<<<<<<<
@@ -113997,7 +114176,7 @@ static PyObject *__pyx_pf_4lxml_5etree_42set_default_parser(CYTHON_UNUSED PyObje
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1569
+/* "src/lxml/parser.pxi":1580
  *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)
  * 
  * def get_default_parser():             # <<<<<<<<<<<<<<
@@ -114029,7 +114208,7 @@ static PyObject *__pyx_pf_4lxml_5etree_44get_default_parser(CYTHON_UNUSED PyObje
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("get_default_parser", 0);
 
-  /* "src/lxml/parser.pxi":1571
+  /* "src/lxml/parser.pxi":1582
  * def get_default_parser():
  *     u"get_default_parser()"
  *     return __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
@@ -114037,13 +114216,13 @@ static PyObject *__pyx_pf_4lxml_5etree_44get_default_parser(CYTHON_UNUSED PyObje
  * ############################################################
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1569
+  /* "src/lxml/parser.pxi":1580
  *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)
  * 
  * def get_default_parser():             # <<<<<<<<<<<<<<
@@ -114062,7 +114241,7 @@ static PyObject *__pyx_pf_4lxml_5etree_44get_default_parser(CYTHON_UNUSED PyObje
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1616
+/* "src/lxml/parser.pxi":1627
  *     reasons.
  *     """
  *     def __init__(self, *, encoding=None, remove_blank_text=False,             # <<<<<<<<<<<<<<
@@ -114095,7 +114274,7 @@ static int __pyx_pw_4lxml_5etree_10HTMLParser_1__init__(PyObject *__pyx_v_self,
     values[0] = ((PyObject *)Py_None);
     values[1] = ((PyObject *)Py_False);
 
-    /* "src/lxml/parser.pxi":1617
+    /* "src/lxml/parser.pxi":1628
  *     """
  *     def __init__(self, *, encoding=None, remove_blank_text=False,
  *                  remove_comments=False, remove_pis=False, strip_cdata=True,             # <<<<<<<<<<<<<<
@@ -114106,7 +114285,7 @@ static int __pyx_pw_4lxml_5etree_10HTMLParser_1__init__(PyObject *__pyx_v_self,
     values[3] = ((PyObject *)Py_False);
     values[4] = ((PyObject *)Py_True);
 
-    /* "src/lxml/parser.pxi":1618
+    /* "src/lxml/parser.pxi":1629
  *     def __init__(self, *, encoding=None, remove_blank_text=False,
  *                  remove_comments=False, remove_pis=False, strip_cdata=True,
  *                  no_network=True, target=None, XMLSchema schema=None,             # <<<<<<<<<<<<<<
@@ -114117,7 +114296,7 @@ static int __pyx_pw_4lxml_5etree_10HTMLParser_1__init__(PyObject *__pyx_v_self,
     values[6] = ((PyObject *)Py_None);
     values[7] = (PyObject *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)Py_None);
 
-    /* "src/lxml/parser.pxi":1619
+    /* "src/lxml/parser.pxi":1630
  *                  remove_comments=False, remove_pis=False, strip_cdata=True,
  *                  no_network=True, target=None, XMLSchema schema=None,
  *                  recover=True, compact=True):             # <<<<<<<<<<<<<<
@@ -114142,7 +114321,7 @@ static int __pyx_pw_4lxml_5etree_10HTMLParser_1__init__(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 0) {
       goto __pyx_L5_argtuple_error;
@@ -114161,16 +114340,16 @@ static int __pyx_pw_4lxml_5etree_10HTMLParser_1__init__(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.HTMLParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema), __pyx_ptype_4lxml_5etree_XMLSchema, 1, "schema", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema), __pyx_ptype_4lxml_5etree_XMLSchema, 1, "schema", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_pf_4lxml_5etree_10HTMLParser___init__(((struct __pyx_obj_4lxml_5etree_HTMLParser *)__pyx_v_self), __pyx_v_encoding, __pyx_v_remove_blank_text, __pyx_v_remove_comments, __pyx_v_remove_pis, __pyx_v_strip_cdata, __pyx_v_no_network, __pyx_v_target, __pyx_v_schema, __pyx_v_recover, __pyx_v_compact);
 
-  /* "src/lxml/parser.pxi":1616
+  /* "src/lxml/parser.pxi":1627
  *     reasons.
  *     """
  *     def __init__(self, *, encoding=None, remove_blank_text=False,             # <<<<<<<<<<<<<<
@@ -114204,7 +114383,7 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "src/lxml/parser.pxi":1621
+  /* "src/lxml/parser.pxi":1632
  *                  recover=True, compact=True):
  *         cdef int parse_options
  *         parse_options = _HTML_DEFAULT_PARSE_OPTIONS             # <<<<<<<<<<<<<<
@@ -114213,17 +114392,17 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
  */
   __pyx_v_parse_options = __pyx_v_4lxml_5etree__HTML_DEFAULT_PARSE_OPTIONS;
 
-  /* "src/lxml/parser.pxi":1622
+  /* "src/lxml/parser.pxi":1633
  *         cdef int parse_options
  *         parse_options = _HTML_DEFAULT_PARSE_OPTIONS
  *         if remove_blank_text:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS
  *         if not recover:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_remove_blank_text); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_remove_blank_text); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1623
+    /* "src/lxml/parser.pxi":1634
  *         parse_options = _HTML_DEFAULT_PARSE_OPTIONS
  *         if remove_blank_text:
  *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS             # <<<<<<<<<<<<<<
@@ -114232,7 +114411,7 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
  */
     __pyx_v_parse_options = (__pyx_v_parse_options | HTML_PARSE_NOBLANKS);
 
-    /* "src/lxml/parser.pxi":1622
+    /* "src/lxml/parser.pxi":1633
  *         cdef int parse_options
  *         parse_options = _HTML_DEFAULT_PARSE_OPTIONS
  *         if remove_blank_text:             # <<<<<<<<<<<<<<
@@ -114241,18 +114420,18 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":1624
+  /* "src/lxml/parser.pxi":1635
  *         if remove_blank_text:
  *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS
  *         if not recover:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER
  *         if not no_network:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_recover); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_recover); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = ((!__pyx_t_1) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1625
+    /* "src/lxml/parser.pxi":1636
  *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS
  *         if not recover:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER             # <<<<<<<<<<<<<<
@@ -114261,7 +114440,7 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
  */
     __pyx_v_parse_options = (__pyx_v_parse_options ^ HTML_PARSE_RECOVER);
 
-    /* "src/lxml/parser.pxi":1624
+    /* "src/lxml/parser.pxi":1635
  *         if remove_blank_text:
  *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS
  *         if not recover:             # <<<<<<<<<<<<<<
@@ -114270,18 +114449,18 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":1626
+  /* "src/lxml/parser.pxi":1637
  *         if not recover:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER
  *         if not no_network:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET
  *         if not compact:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_no_network); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_no_network); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_1 = ((!__pyx_t_2) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1627
+    /* "src/lxml/parser.pxi":1638
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER
  *         if not no_network:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET             # <<<<<<<<<<<<<<
@@ -114290,7 +114469,7 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
  */
     __pyx_v_parse_options = (__pyx_v_parse_options ^ HTML_PARSE_NONET);
 
-    /* "src/lxml/parser.pxi":1626
+    /* "src/lxml/parser.pxi":1637
  *         if not recover:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER
  *         if not no_network:             # <<<<<<<<<<<<<<
@@ -114299,18 +114478,18 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":1628
+  /* "src/lxml/parser.pxi":1639
  *         if not no_network:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET
  *         if not compact:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_COMPACT
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_compact); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_compact); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = ((!__pyx_t_1) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1629
+    /* "src/lxml/parser.pxi":1640
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET
  *         if not compact:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_COMPACT             # <<<<<<<<<<<<<<
@@ -114319,7 +114498,7 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
  */
     __pyx_v_parse_options = (__pyx_v_parse_options ^ HTML_PARSE_COMPACT);
 
-    /* "src/lxml/parser.pxi":1628
+    /* "src/lxml/parser.pxi":1639
  *         if not no_network:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET
  *         if not compact:             # <<<<<<<<<<<<<<
@@ -114328,19 +114507,19 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":1631
+  /* "src/lxml/parser.pxi":1642
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_COMPACT
  * 
  *         _BaseParser.__init__(self, parse_options, 1, schema,             # <<<<<<<<<<<<<<
  *                              remove_comments, remove_pis, strip_cdata, True,
  *                              target, encoding)
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser), __pyx_n_s_init); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser), __pyx_n_s_init); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_parse_options); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_parse_options); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
 
-  /* "src/lxml/parser.pxi":1633
+  /* "src/lxml/parser.pxi":1644
  *         _BaseParser.__init__(self, parse_options, 1, schema,
  *                              remove_comments, remove_pis, strip_cdata, True,
  *                              target, encoding)             # <<<<<<<<<<<<<<
@@ -114359,7 +114538,7 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
       __pyx_t_7 = 1;
     }
   }
-  __pyx_t_8 = PyTuple_New(10+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyTuple_New(10+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   if (__pyx_t_6) {
     __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
@@ -114394,13 +114573,13 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
   __Pyx_GIVEREF(__pyx_v_encoding);
   PyTuple_SET_ITEM(__pyx_t_8, 9+__pyx_t_7, __pyx_v_encoding);
   __pyx_t_5 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1616
+  /* "src/lxml/parser.pxi":1627
  *     reasons.
  *     """
  *     def __init__(self, *, encoding=None, remove_blank_text=False,             # <<<<<<<<<<<<<<
@@ -114424,7 +114603,7 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1658
+/* "src/lxml/parser.pxi":1669
  *     source, you can pass the ``base_url``.
  *     """
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):             # <<<<<<<<<<<<<<
@@ -114477,7 +114656,7 @@ static int __pyx_pw_4lxml_5etree_14HTMLPullParser_1__init__(PyObject *__pyx_v_se
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1658; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -114492,7 +114671,7 @@ static int __pyx_pw_4lxml_5etree_14HTMLPullParser_1__init__(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1658; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
   __Pyx_AddTraceback("lxml.etree.HTMLPullParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -114521,27 +114700,27 @@ static int __pyx_pf_4lxml_5etree_14HTMLPullParser___init__(struct __pyx_obj_4lxm
   __Pyx_RefNannySetupContext("__init__", 0);
   __Pyx_INCREF(__pyx_v_events);
 
-  /* "src/lxml/parser.pxi":1659
+  /* "src/lxml/parser.pxi":1670
  *     """
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):
  *         HTMLParser.__init__(self, **kwargs)             # <<<<<<<<<<<<<<
  *         if events is None:
  *             events = ('end',)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_HTMLParser), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_HTMLParser), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1670; __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[6]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
   PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self));
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1660
+  /* "src/lxml/parser.pxi":1671
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):
  *         HTMLParser.__init__(self, **kwargs)
  *         if events is None:             # <<<<<<<<<<<<<<
@@ -114552,17 +114731,17 @@ static int __pyx_pf_4lxml_5etree_14HTMLPullParser___init__(struct __pyx_obj_4lxm
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
 
-    /* "src/lxml/parser.pxi":1661
+    /* "src/lxml/parser.pxi":1672
  *         HTMLParser.__init__(self, **kwargs)
  *         if events is None:
  *             events = ('end',)             # <<<<<<<<<<<<<<
  *         self._setBaseURL(base_url)
  *         self._collectEvents(events, tag)
  */
-    __Pyx_INCREF(__pyx_tuple__62);
-    __Pyx_DECREF_SET(__pyx_v_events, __pyx_tuple__62);
+    __Pyx_INCREF(__pyx_tuple__63);
+    __Pyx_DECREF_SET(__pyx_v_events, __pyx_tuple__63);
 
-    /* "src/lxml/parser.pxi":1660
+    /* "src/lxml/parser.pxi":1671
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):
  *         HTMLParser.__init__(self, **kwargs)
  *         if events is None:             # <<<<<<<<<<<<<<
@@ -114571,29 +114750,29 @@ static int __pyx_pf_4lxml_5etree_14HTMLPullParser___init__(struct __pyx_obj_4lxm
  */
   }
 
-  /* "src/lxml/parser.pxi":1662
+  /* "src/lxml/parser.pxi":1673
  *         if events is None:
  *             events = ('end',)
  *         self._setBaseURL(base_url)             # <<<<<<<<<<<<<<
  *         self._collectEvents(events, tag)
  * 
  */
-  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._setBaseURL(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_base_url); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._setBaseURL(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_base_url); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1663
+  /* "src/lxml/parser.pxi":1674
  *             events = ('end',)
  *         self._setBaseURL(base_url)
  *         self._collectEvents(events, tag)             # <<<<<<<<<<<<<<
  * 
  *     def read_events(self):
  */
-  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._collectEvents(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._collectEvents(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1658
+  /* "src/lxml/parser.pxi":1669
  *     source, you can pass the ``base_url``.
  *     """
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):             # <<<<<<<<<<<<<<
@@ -114616,7 +114795,7 @@ static int __pyx_pf_4lxml_5etree_14HTMLPullParser___init__(struct __pyx_obj_4lxm
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1665
+/* "src/lxml/parser.pxi":1676
  *         self._collectEvents(events, tag)
  * 
  *     def read_events(self):             # <<<<<<<<<<<<<<
@@ -114646,7 +114825,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14HTMLPullParser_2read_events(struct __py
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("read_events", 0);
 
-  /* "src/lxml/parser.pxi":1666
+  /* "src/lxml/parser.pxi":1677
  * 
  *     def read_events(self):
  *         return (<_SaxParserContext?>self._getPushParserContext()).events_iterator             # <<<<<<<<<<<<<<
@@ -114654,15 +114833,15 @@ static PyObject *__pyx_pf_4lxml_5etree_14HTMLPullParser_2read_events(struct __py
  * 
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1666; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__SaxParserContext)))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1666; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__SaxParserContext)))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_1)->events_iterator));
   __pyx_r = ((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_1)->events_iterator);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1665
+  /* "src/lxml/parser.pxi":1676
  *         self._collectEvents(events, tag)
  * 
  *     def read_events(self):             # <<<<<<<<<<<<<<
@@ -114681,7 +114860,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14HTMLPullParser_2read_events(struct __py
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1673
+/* "src/lxml/parser.pxi":1684
  * ############################################################
  * 
  * cdef xmlDoc* _parseDoc(text, filename, _BaseParser parser) except NULL:             # <<<<<<<<<<<<<<
@@ -114711,7 +114890,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
   __Pyx_INCREF(__pyx_v_text);
   __Pyx_INCREF((PyObject *)__pyx_v_parser);
 
-  /* "src/lxml/parser.pxi":1678
+  /* "src/lxml/parser.pxi":1689
  *     cdef Py_ssize_t c_len
  *     cdef bint is_pep393_string
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -114722,19 +114901,19 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1679
+    /* "src/lxml/parser.pxi":1690
  *     cdef bint is_pep393_string
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
  *     if not filename:
  *         c_filename = NULL
  */
-    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_3));
     __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":1678
+    /* "src/lxml/parser.pxi":1689
  *     cdef Py_ssize_t c_len
  *     cdef bint is_pep393_string
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -114743,18 +114922,18 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  */
   }
 
-  /* "src/lxml/parser.pxi":1680
+  /* "src/lxml/parser.pxi":1691
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     if not filename:             # <<<<<<<<<<<<<<
  *         c_filename = NULL
  *     else:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_filename); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_filename); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1691; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_1 = ((!__pyx_t_2) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1681
+    /* "src/lxml/parser.pxi":1692
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     if not filename:
  *         c_filename = NULL             # <<<<<<<<<<<<<<
@@ -114763,7 +114942,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  */
     __pyx_v_c_filename = NULL;
 
-    /* "src/lxml/parser.pxi":1680
+    /* "src/lxml/parser.pxi":1691
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     if not filename:             # <<<<<<<<<<<<<<
@@ -114773,7 +114952,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
     goto __pyx_L4;
   }
 
-  /* "src/lxml/parser.pxi":1683
+  /* "src/lxml/parser.pxi":1694
  *         c_filename = NULL
  *     else:
  *         filename_utf = _encodeFilenameUTF8(filename)             # <<<<<<<<<<<<<<
@@ -114781,12 +114960,12 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  *     if isinstance(text, unicode):
  */
   /*else*/ {
-    __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilenameUTF8(__pyx_v_filename); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilenameUTF8(__pyx_v_filename); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_filename_utf = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":1684
+    /* "src/lxml/parser.pxi":1695
  *     else:
  *         filename_utf = _encodeFilenameUTF8(filename)
  *         c_filename = _cstr(filename_utf)             # <<<<<<<<<<<<<<
@@ -114797,7 +114976,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
   }
   __pyx_L4:;
 
-  /* "src/lxml/parser.pxi":1685
+  /* "src/lxml/parser.pxi":1696
  *         filename_utf = _encodeFilenameUTF8(filename)
  *         c_filename = _cstr(filename_utf)
  *     if isinstance(text, unicode):             # <<<<<<<<<<<<<<
@@ -114808,7 +114987,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1687
+    /* "src/lxml/parser.pxi":1698
  *     if isinstance(text, unicode):
  *         is_pep393_string = (
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(text))             # <<<<<<<<<<<<<<
@@ -114826,7 +115005,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
     __pyx_L6_bool_binop_done:;
     __pyx_v_is_pep393_string = __pyx_t_2;
 
-    /* "src/lxml/parser.pxi":1688
+    /* "src/lxml/parser.pxi":1699
  *         is_pep393_string = (
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(text))
  *         if is_pep393_string:             # <<<<<<<<<<<<<<
@@ -114836,7 +115015,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
     __pyx_t_2 = (__pyx_v_is_pep393_string != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":1689
+      /* "src/lxml/parser.pxi":1700
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(text))
  *         if is_pep393_string:
  *             c_len = python.PyUnicode_GET_LENGTH(text)             # <<<<<<<<<<<<<<
@@ -114845,7 +115024,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  */
       __pyx_v_c_len = PyUnicode_GET_LENGTH(__pyx_v_text);
 
-      /* "src/lxml/parser.pxi":1690
+      /* "src/lxml/parser.pxi":1701
  *         if is_pep393_string:
  *             c_len = python.PyUnicode_GET_LENGTH(text)
  *             c_len *= python.PyUnicode_KIND(text)             # <<<<<<<<<<<<<<
@@ -114854,7 +115033,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  */
       __pyx_v_c_len = (__pyx_v_c_len * PyUnicode_KIND(__pyx_v_text));
 
-      /* "src/lxml/parser.pxi":1688
+      /* "src/lxml/parser.pxi":1699
  *         is_pep393_string = (
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(text))
  *         if is_pep393_string:             # <<<<<<<<<<<<<<
@@ -114864,7 +115043,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
       goto __pyx_L8;
     }
 
-    /* "src/lxml/parser.pxi":1692
+    /* "src/lxml/parser.pxi":1703
  *             c_len *= python.PyUnicode_KIND(text)
  *         else:
  *             c_len = python.PyUnicode_GET_DATA_SIZE(text)             # <<<<<<<<<<<<<<
@@ -114876,7 +115055,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
     }
     __pyx_L8:;
 
-    /* "src/lxml/parser.pxi":1693
+    /* "src/lxml/parser.pxi":1704
  *         else:
  *             c_len = python.PyUnicode_GET_DATA_SIZE(text)
  *         if c_len > limits.INT_MAX:             # <<<<<<<<<<<<<<
@@ -114886,7 +115065,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
     __pyx_t_2 = ((__pyx_v_c_len > INT_MAX) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":1695
+      /* "src/lxml/parser.pxi":1706
  *         if c_len > limits.INT_MAX:
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 StringIO(text), filename, None)             # <<<<<<<<<<<<<<
@@ -114905,34 +115084,34 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
         }
       }
       if (!__pyx_t_5) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_text); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_text); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
         __Pyx_INCREF(__pyx_v_text);
         __Pyx_GIVEREF(__pyx_v_text);
         PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_text);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "src/lxml/parser.pxi":1694
+      /* "src/lxml/parser.pxi":1705
  *             c_len = python.PyUnicode_GET_DATA_SIZE(text)
  *         if c_len > limits.INT_MAX:
  *             return (<_BaseParser>parser)._parseDocFromFilelike(             # <<<<<<<<<<<<<<
  *                 StringIO(text), filename, None)
  *         if _UNICODE_ENCODING is NULL and not is_pep393_string:
  */
-      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_t_3, __pyx_v_filename, Py_None); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_t_3, __pyx_v_filename, Py_None); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_r = __pyx_t_7;
       goto __pyx_L0;
 
-      /* "src/lxml/parser.pxi":1693
+      /* "src/lxml/parser.pxi":1704
  *         else:
  *             c_len = python.PyUnicode_GET_DATA_SIZE(text)
  *         if c_len > limits.INT_MAX:             # <<<<<<<<<<<<<<
@@ -114941,7 +115120,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  */
     }
 
-    /* "src/lxml/parser.pxi":1696
+    /* "src/lxml/parser.pxi":1707
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 StringIO(text), filename, None)
  *         if _UNICODE_ENCODING is NULL and not is_pep393_string:             # <<<<<<<<<<<<<<
@@ -114959,7 +115138,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
     __pyx_L11_bool_binop_done:;
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":1697
+      /* "src/lxml/parser.pxi":1708
  *                 StringIO(text), filename, None)
  *         if _UNICODE_ENCODING is NULL and not is_pep393_string:
  *             text = (<unicode>text).encode('utf8')             # <<<<<<<<<<<<<<
@@ -114968,14 +115147,14 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  */
       if (unlikely(__pyx_v_text == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "encode");
-        {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_t_3 = PyUnicode_AsUTF8String(((PyObject*)__pyx_v_text)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyUnicode_AsUTF8String(((PyObject*)__pyx_v_text)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "src/lxml/parser.pxi":1699
+      /* "src/lxml/parser.pxi":1710
  *             text = (<unicode>text).encode('utf8')
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 BytesIO(text), filename, "UTF-8")             # <<<<<<<<<<<<<<
@@ -114994,34 +115173,34 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
         }
       }
       if (!__pyx_t_6) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_text); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_text); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
         __Pyx_INCREF(__pyx_v_text);
         __Pyx_GIVEREF(__pyx_v_text);
         PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_text);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "src/lxml/parser.pxi":1698
+      /* "src/lxml/parser.pxi":1709
  *         if _UNICODE_ENCODING is NULL and not is_pep393_string:
  *             text = (<unicode>text).encode('utf8')
  *             return (<_BaseParser>parser)._parseDocFromFilelike(             # <<<<<<<<<<<<<<
  *                 BytesIO(text), filename, "UTF-8")
  *         return (<_BaseParser>parser)._parseUnicodeDoc(text, c_filename)
  */
-      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_t_3, __pyx_v_filename, __pyx_kp_s_UTF_8); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_t_3, __pyx_v_filename, __pyx_kp_s_UTF_8); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_r = __pyx_t_7;
       goto __pyx_L0;
 
-      /* "src/lxml/parser.pxi":1696
+      /* "src/lxml/parser.pxi":1707
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 StringIO(text), filename, None)
  *         if _UNICODE_ENCODING is NULL and not is_pep393_string:             # <<<<<<<<<<<<<<
@@ -115030,18 +115209,18 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  */
     }
 
-    /* "src/lxml/parser.pxi":1700
+    /* "src/lxml/parser.pxi":1711
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 BytesIO(text), filename, "UTF-8")
  *         return (<_BaseParser>parser)._parseUnicodeDoc(text, c_filename)             # <<<<<<<<<<<<<<
  *     else:
  *         c_len = python.PyBytes_GET_SIZE(text)
  */
-    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseUnicodeDoc(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_text, __pyx_v_c_filename); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseUnicodeDoc(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_text, __pyx_v_c_filename); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_r = __pyx_t_7;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":1685
+    /* "src/lxml/parser.pxi":1696
  *         filename_utf = _encodeFilenameUTF8(filename)
  *         c_filename = _cstr(filename_utf)
  *     if isinstance(text, unicode):             # <<<<<<<<<<<<<<
@@ -115050,7 +115229,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  */
   }
 
-  /* "src/lxml/parser.pxi":1702
+  /* "src/lxml/parser.pxi":1713
  *         return (<_BaseParser>parser)._parseUnicodeDoc(text, c_filename)
  *     else:
  *         c_len = python.PyBytes_GET_SIZE(text)             # <<<<<<<<<<<<<<
@@ -115060,7 +115239,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
   /*else*/ {
     __pyx_v_c_len = PyBytes_GET_SIZE(__pyx_v_text);
 
-    /* "src/lxml/parser.pxi":1703
+    /* "src/lxml/parser.pxi":1714
  *     else:
  *         c_len = python.PyBytes_GET_SIZE(text)
  *         if c_len > limits.INT_MAX:             # <<<<<<<<<<<<<<
@@ -115070,7 +115249,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
     __pyx_t_2 = ((__pyx_v_c_len > INT_MAX) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":1705
+      /* "src/lxml/parser.pxi":1716
  *         if c_len > limits.INT_MAX:
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 BytesIO(text), filename, None)             # <<<<<<<<<<<<<<
@@ -115089,34 +115268,34 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
         }
       }
       if (!__pyx_t_5) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_text); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_text); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
         __Pyx_INCREF(__pyx_v_text);
         __Pyx_GIVEREF(__pyx_v_text);
         PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_text);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "src/lxml/parser.pxi":1704
+      /* "src/lxml/parser.pxi":1715
  *         c_len = python.PyBytes_GET_SIZE(text)
  *         if c_len > limits.INT_MAX:
  *             return (<_BaseParser>parser)._parseDocFromFilelike(             # <<<<<<<<<<<<<<
  *                 BytesIO(text), filename, None)
  *         c_text = _cstr(text)
  */
-      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_t_3, __pyx_v_filename, Py_None); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_t_3, __pyx_v_filename, Py_None); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_r = __pyx_t_7;
       goto __pyx_L0;
 
-      /* "src/lxml/parser.pxi":1703
+      /* "src/lxml/parser.pxi":1714
  *     else:
  *         c_len = python.PyBytes_GET_SIZE(text)
  *         if c_len > limits.INT_MAX:             # <<<<<<<<<<<<<<
@@ -115125,7 +115304,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  */
     }
 
-    /* "src/lxml/parser.pxi":1706
+    /* "src/lxml/parser.pxi":1717
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 BytesIO(text), filename, None)
  *         c_text = _cstr(text)             # <<<<<<<<<<<<<<
@@ -115134,19 +115313,19 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  */
     __pyx_v_c_text = PyBytes_AS_STRING(__pyx_v_text);
 
-    /* "src/lxml/parser.pxi":1707
+    /* "src/lxml/parser.pxi":1718
  *                 BytesIO(text), filename, None)
  *         c_text = _cstr(text)
  *         return (<_BaseParser>parser)._parseDoc(c_text, c_len, c_filename)             # <<<<<<<<<<<<<<
  * 
  * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:
  */
-    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDoc(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_c_text, __pyx_v_c_len, __pyx_v_c_filename); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDoc(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_c_text, __pyx_v_c_len, __pyx_v_c_filename); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_r = __pyx_t_7;
     goto __pyx_L0;
   }
 
-  /* "src/lxml/parser.pxi":1673
+  /* "src/lxml/parser.pxi":1684
  * ############################################################
  * 
  * cdef xmlDoc* _parseDoc(text, filename, _BaseParser parser) except NULL:             # <<<<<<<<<<<<<<
@@ -115170,7 +115349,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1709
+/* "src/lxml/parser.pxi":1720
  *         return (<_BaseParser>parser)._parseDoc(c_text, c_len, c_filename)
  * 
  * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:             # <<<<<<<<<<<<<<
@@ -115191,7 +115370,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFile(PyObject *__pyx_v_filename
   __Pyx_RefNannySetupContext("_parseDocFromFile", 0);
   __Pyx_INCREF((PyObject *)__pyx_v_parser);
 
-  /* "src/lxml/parser.pxi":1710
+  /* "src/lxml/parser.pxi":1721
  * 
  * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -115202,19 +115381,19 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFile(PyObject *__pyx_v_filename
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1711
+    /* "src/lxml/parser.pxi":1722
  * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
  *     return (<_BaseParser>parser)._parseDocFromFile(_cstr(filename8))
  * 
  */
-    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_3));
     __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":1710
+    /* "src/lxml/parser.pxi":1721
  * 
  * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -115223,18 +115402,18 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFile(PyObject *__pyx_v_filename
  */
   }
 
-  /* "src/lxml/parser.pxi":1712
+  /* "src/lxml/parser.pxi":1723
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     return (<_BaseParser>parser)._parseDocFromFile(_cstr(filename8))             # <<<<<<<<<<<<<<
  * 
  * cdef xmlDoc* _parseDocFromFilelike(source, filename,
  */
-  __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFile(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), PyBytes_AS_STRING(__pyx_v_filename8)); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFile(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), PyBytes_AS_STRING(__pyx_v_filename8)); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_t_4;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1709
+  /* "src/lxml/parser.pxi":1720
  *         return (<_BaseParser>parser)._parseDoc(c_text, c_len, c_filename)
  * 
  * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:             # <<<<<<<<<<<<<<
@@ -115253,7 +115432,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFile(PyObject *__pyx_v_filename
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1714
+/* "src/lxml/parser.pxi":1725
  *     return (<_BaseParser>parser)._parseDocFromFile(_cstr(filename8))
  * 
  * cdef xmlDoc* _parseDocFromFilelike(source, filename,             # <<<<<<<<<<<<<<
@@ -115274,7 +115453,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFilelike(PyObject *__pyx_v_sour
   __Pyx_RefNannySetupContext("_parseDocFromFilelike", 0);
   __Pyx_INCREF((PyObject *)__pyx_v_parser);
 
-  /* "src/lxml/parser.pxi":1716
+  /* "src/lxml/parser.pxi":1727
  * cdef xmlDoc* _parseDocFromFilelike(source, filename,
  *                                    _BaseParser parser) except NULL:
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -115285,19 +115464,19 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFilelike(PyObject *__pyx_v_sour
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1717
+    /* "src/lxml/parser.pxi":1728
  *                                    _BaseParser parser) except NULL:
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
  *     return (<_BaseParser>parser)._parseDocFromFilelike(source, filename, None)
  * 
  */
-    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_3));
     __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":1716
+    /* "src/lxml/parser.pxi":1727
  * cdef xmlDoc* _parseDocFromFilelike(source, filename,
  *                                    _BaseParser parser) except NULL:
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -115306,18 +115485,18 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFilelike(PyObject *__pyx_v_sour
  */
   }
 
-  /* "src/lxml/parser.pxi":1718
+  /* "src/lxml/parser.pxi":1729
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     return (<_BaseParser>parser)._parseDocFromFilelike(source, filename, None)             # <<<<<<<<<<<<<<
  * 
  * cdef xmlDoc* _newXMLDoc() except NULL:
  */
-  __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_source, __pyx_v_filename, Py_None); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_source, __pyx_v_filename, Py_None); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_t_4;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1714
+  /* "src/lxml/parser.pxi":1725
  *     return (<_BaseParser>parser)._parseDocFromFile(_cstr(filename8))
  * 
  * cdef xmlDoc* _parseDocFromFilelike(source, filename,             # <<<<<<<<<<<<<<
@@ -115336,7 +115515,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFilelike(PyObject *__pyx_v_sour
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1720
+/* "src/lxml/parser.pxi":1731
  *     return (<_BaseParser>parser)._parseDocFromFilelike(source, filename, None)
  * 
  * cdef xmlDoc* _newXMLDoc() except NULL:             # <<<<<<<<<<<<<<
@@ -115354,7 +115533,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_newXMLDoc", 0);
 
-  /* "src/lxml/parser.pxi":1722
+  /* "src/lxml/parser.pxi":1733
  * cdef xmlDoc* _newXMLDoc() except NULL:
  *     cdef xmlDoc* result
  *     result = tree.xmlNewDoc(NULL)             # <<<<<<<<<<<<<<
@@ -115363,7 +115542,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
  */
   __pyx_v_result = xmlNewDoc(NULL);
 
-  /* "src/lxml/parser.pxi":1723
+  /* "src/lxml/parser.pxi":1734
  *     cdef xmlDoc* result
  *     result = tree.xmlNewDoc(NULL)
  *     if result is NULL:             # <<<<<<<<<<<<<<
@@ -115373,16 +115552,16 @@ static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
   __pyx_t_1 = ((__pyx_v_result == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1724
+    /* "src/lxml/parser.pxi":1735
  *     result = tree.xmlNewDoc(NULL)
  *     if result is NULL:
  *         raise MemoryError()             # <<<<<<<<<<<<<<
  *     if result.encoding is NULL:
  *         result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")
  */
-    PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":1723
+    /* "src/lxml/parser.pxi":1734
  *     cdef xmlDoc* result
  *     result = tree.xmlNewDoc(NULL)
  *     if result is NULL:             # <<<<<<<<<<<<<<
@@ -115391,7 +115570,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
  */
   }
 
-  /* "src/lxml/parser.pxi":1725
+  /* "src/lxml/parser.pxi":1736
  *     if result is NULL:
  *         raise MemoryError()
  *     if result.encoding is NULL:             # <<<<<<<<<<<<<<
@@ -115401,7 +115580,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
   __pyx_t_1 = ((__pyx_v_result->encoding == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1726
+    /* "src/lxml/parser.pxi":1737
  *         raise MemoryError()
  *     if result.encoding is NULL:
  *         result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")             # <<<<<<<<<<<<<<
@@ -115410,7 +115589,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
  */
     __pyx_v_result->encoding = xmlStrdup(((unsigned char *)((unsigned char *)__pyx_k_UTF_8)));
 
-    /* "src/lxml/parser.pxi":1725
+    /* "src/lxml/parser.pxi":1736
  *     if result is NULL:
  *         raise MemoryError()
  *     if result.encoding is NULL:             # <<<<<<<<<<<<<<
@@ -115419,7 +115598,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
  */
   }
 
-  /* "src/lxml/parser.pxi":1727
+  /* "src/lxml/parser.pxi":1738
  *     if result.encoding is NULL:
  *         result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)             # <<<<<<<<<<<<<<
@@ -115428,7 +115607,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
  */
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_result);
 
-  /* "src/lxml/parser.pxi":1728
+  /* "src/lxml/parser.pxi":1739
  *         result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     return result             # <<<<<<<<<<<<<<
@@ -115438,7 +115617,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
   __pyx_r = __pyx_v_result;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1720
+  /* "src/lxml/parser.pxi":1731
  *     return (<_BaseParser>parser)._parseDocFromFilelike(source, filename, None)
  * 
  * cdef xmlDoc* _newXMLDoc() except NULL:             # <<<<<<<<<<<<<<
@@ -115455,7 +115634,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1730
+/* "src/lxml/parser.pxi":1741
  *     return result
  * 
  * cdef xmlDoc* _newHTMLDoc() except NULL:             # <<<<<<<<<<<<<<
@@ -115473,7 +115652,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__newHTMLDoc(void) {
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_newHTMLDoc", 0);
 
-  /* "src/lxml/parser.pxi":1732
+  /* "src/lxml/parser.pxi":1743
  * cdef xmlDoc* _newHTMLDoc() except NULL:
  *     cdef xmlDoc* result
  *     result = tree.htmlNewDoc(NULL, NULL)             # <<<<<<<<<<<<<<
@@ -115482,7 +115661,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__newHTMLDoc(void) {
  */
   __pyx_v_result = htmlNewDoc(NULL, NULL);
 
-  /* "src/lxml/parser.pxi":1733
+  /* "src/lxml/parser.pxi":1744
  *     cdef xmlDoc* result
  *     result = tree.htmlNewDoc(NULL, NULL)
  *     if result is NULL:             # <<<<<<<<<<<<<<
@@ -115492,16 +115671,16 @@ static xmlDoc *__pyx_f_4lxml_5etree__newHTMLDoc(void) {
   __pyx_t_1 = ((__pyx_v_result == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1734
+    /* "src/lxml/parser.pxi":1745
  *     result = tree.htmlNewDoc(NULL, NULL)
  *     if result is NULL:
  *         raise MemoryError()             # <<<<<<<<<<<<<<
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     return result
  */
-    PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":1733
+    /* "src/lxml/parser.pxi":1744
  *     cdef xmlDoc* result
  *     result = tree.htmlNewDoc(NULL, NULL)
  *     if result is NULL:             # <<<<<<<<<<<<<<
@@ -115510,7 +115689,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__newHTMLDoc(void) {
  */
   }
 
-  /* "src/lxml/parser.pxi":1735
+  /* "src/lxml/parser.pxi":1746
  *     if result is NULL:
  *         raise MemoryError()
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)             # <<<<<<<<<<<<<<
@@ -115519,7 +115698,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__newHTMLDoc(void) {
  */
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_result);
 
-  /* "src/lxml/parser.pxi":1736
+  /* "src/lxml/parser.pxi":1747
  *         raise MemoryError()
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     return result             # <<<<<<<<<<<<<<
@@ -115529,7 +115708,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__newHTMLDoc(void) {
   __pyx_r = __pyx_v_result;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1730
+  /* "src/lxml/parser.pxi":1741
  *     return result
  * 
  * cdef xmlDoc* _newHTMLDoc() except NULL:             # <<<<<<<<<<<<<<
@@ -115546,7 +115725,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__newHTMLDoc(void) {
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1738
+/* "src/lxml/parser.pxi":1749
  *     return result
  * 
  * cdef xmlDoc* _copyDoc(xmlDoc* c_doc, int recursive) except NULL:             # <<<<<<<<<<<<<<
@@ -115564,7 +115743,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_copyDoc", 0);
 
-  /* "src/lxml/parser.pxi":1740
+  /* "src/lxml/parser.pxi":1751
  * cdef xmlDoc* _copyDoc(xmlDoc* c_doc, int recursive) except NULL:
  *     cdef xmlDoc* result
  *     if recursive:             # <<<<<<<<<<<<<<
@@ -115574,7 +115753,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
   __pyx_t_1 = (__pyx_v_recursive != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1741
+    /* "src/lxml/parser.pxi":1752
  *     cdef xmlDoc* result
  *     if recursive:
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -115588,7 +115767,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
         #endif
         /*try:*/ {
 
-          /* "src/lxml/parser.pxi":1742
+          /* "src/lxml/parser.pxi":1753
  *     if recursive:
  *         with nogil:
  *             result = tree.xmlCopyDoc(c_doc, recursive)             # <<<<<<<<<<<<<<
@@ -115598,7 +115777,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
           __pyx_v_result = xmlCopyDoc(__pyx_v_c_doc, __pyx_v_recursive);
         }
 
-        /* "src/lxml/parser.pxi":1741
+        /* "src/lxml/parser.pxi":1752
  *     cdef xmlDoc* result
  *     if recursive:
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -115616,7 +115795,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
         }
     }
 
-    /* "src/lxml/parser.pxi":1740
+    /* "src/lxml/parser.pxi":1751
  * cdef xmlDoc* _copyDoc(xmlDoc* c_doc, int recursive) except NULL:
  *     cdef xmlDoc* result
  *     if recursive:             # <<<<<<<<<<<<<<
@@ -115626,7 +115805,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":1744
+  /* "src/lxml/parser.pxi":1755
  *             result = tree.xmlCopyDoc(c_doc, recursive)
  *     else:
  *         result = tree.xmlCopyDoc(c_doc, 0)             # <<<<<<<<<<<<<<
@@ -115638,7 +115817,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":1745
+  /* "src/lxml/parser.pxi":1756
  *     else:
  *         result = tree.xmlCopyDoc(c_doc, 0)
  *     if result is NULL:             # <<<<<<<<<<<<<<
@@ -115648,16 +115827,16 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
   __pyx_t_1 = ((__pyx_v_result == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1746
+    /* "src/lxml/parser.pxi":1757
  *         result = tree.xmlCopyDoc(c_doc, 0)
  *     if result is NULL:
  *         raise MemoryError()             # <<<<<<<<<<<<<<
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     return result
  */
-    PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":1745
+    /* "src/lxml/parser.pxi":1756
  *     else:
  *         result = tree.xmlCopyDoc(c_doc, 0)
  *     if result is NULL:             # <<<<<<<<<<<<<<
@@ -115666,7 +115845,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
  */
   }
 
-  /* "src/lxml/parser.pxi":1747
+  /* "src/lxml/parser.pxi":1758
  *     if result is NULL:
  *         raise MemoryError()
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)             # <<<<<<<<<<<<<<
@@ -115675,7 +115854,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
  */
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_result);
 
-  /* "src/lxml/parser.pxi":1748
+  /* "src/lxml/parser.pxi":1759
  *         raise MemoryError()
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     return result             # <<<<<<<<<<<<<<
@@ -115685,7 +115864,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
   __pyx_r = __pyx_v_result;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1738
+  /* "src/lxml/parser.pxi":1749
  *     return result
  * 
  * cdef xmlDoc* _copyDoc(xmlDoc* c_doc, int recursive) except NULL:             # <<<<<<<<<<<<<<
@@ -115702,7 +115881,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1750
+/* "src/lxml/parser.pxi":1761
  *     return result
  * 
  * cdef xmlDoc* _copyDocRoot(xmlDoc* c_doc, xmlNode* c_new_root) except NULL:             # <<<<<<<<<<<<<<
@@ -115722,7 +115901,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_copyDocRoot", 0);
 
-  /* "src/lxml/parser.pxi":1754
+  /* "src/lxml/parser.pxi":1765
  *     cdef xmlDoc* result
  *     cdef xmlNode* c_node
  *     result = tree.xmlCopyDoc(c_doc, 0) # non recursive             # <<<<<<<<<<<<<<
@@ -115731,7 +115910,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
  */
   __pyx_v_result = xmlCopyDoc(__pyx_v_c_doc, 0);
 
-  /* "src/lxml/parser.pxi":1755
+  /* "src/lxml/parser.pxi":1766
  *     cdef xmlNode* c_node
  *     result = tree.xmlCopyDoc(c_doc, 0) # non recursive
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)             # <<<<<<<<<<<<<<
@@ -115740,7 +115919,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
  */
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_result);
 
-  /* "src/lxml/parser.pxi":1756
+  /* "src/lxml/parser.pxi":1767
  *     result = tree.xmlCopyDoc(c_doc, 0) # non recursive
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -115754,7 +115933,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
       #endif
       /*try:*/ {
 
-        /* "src/lxml/parser.pxi":1757
+        /* "src/lxml/parser.pxi":1768
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     with nogil:
  *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive             # <<<<<<<<<<<<<<
@@ -115764,7 +115943,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
         __pyx_v_c_node = xmlDocCopyNode(__pyx_v_c_new_root, __pyx_v_result, 1);
       }
 
-      /* "src/lxml/parser.pxi":1756
+      /* "src/lxml/parser.pxi":1767
  *     result = tree.xmlCopyDoc(c_doc, 0) # non recursive
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -115782,7 +115961,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
       }
   }
 
-  /* "src/lxml/parser.pxi":1758
+  /* "src/lxml/parser.pxi":1769
  *     with nogil:
  *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive
  *     if c_node is NULL:             # <<<<<<<<<<<<<<
@@ -115792,16 +115971,16 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1759
+    /* "src/lxml/parser.pxi":1770
  *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive
  *     if c_node is NULL:
  *         raise MemoryError()             # <<<<<<<<<<<<<<
  *     tree.xmlDocSetRootElement(result, c_node)
  *     _copyTail(c_new_root.next, c_node)
  */
-    PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":1758
+    /* "src/lxml/parser.pxi":1769
  *     with nogil:
  *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive
  *     if c_node is NULL:             # <<<<<<<<<<<<<<
@@ -115810,7 +115989,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
  */
   }
 
-  /* "src/lxml/parser.pxi":1760
+  /* "src/lxml/parser.pxi":1771
  *     if c_node is NULL:
  *         raise MemoryError()
  *     tree.xmlDocSetRootElement(result, c_node)             # <<<<<<<<<<<<<<
@@ -115819,16 +115998,16 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
  */
   xmlDocSetRootElement(__pyx_v_result, __pyx_v_c_node);
 
-  /* "src/lxml/parser.pxi":1761
+  /* "src/lxml/parser.pxi":1772
  *         raise MemoryError()
  *     tree.xmlDocSetRootElement(result, c_node)
  *     _copyTail(c_new_root.next, c_node)             # <<<<<<<<<<<<<<
  *     return result
  * 
  */
-  __pyx_t_2 = __pyx_f_4lxml_5etree__copyTail(__pyx_v_c_new_root->next, __pyx_v_c_node); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __pyx_f_4lxml_5etree__copyTail(__pyx_v_c_new_root->next, __pyx_v_c_node); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1762
+  /* "src/lxml/parser.pxi":1773
  *     tree.xmlDocSetRootElement(result, c_node)
  *     _copyTail(c_new_root.next, c_node)
  *     return result             # <<<<<<<<<<<<<<
@@ -115838,7 +116017,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
   __pyx_r = __pyx_v_result;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1750
+  /* "src/lxml/parser.pxi":1761
  *     return result
  * 
  * cdef xmlDoc* _copyDocRoot(xmlDoc* c_doc, xmlNode* c_new_root) except NULL:             # <<<<<<<<<<<<<<
@@ -115855,7 +116034,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1764
+/* "src/lxml/parser.pxi":1775
  *     return result
  * 
  * cdef xmlNode* _copyNodeToDoc(xmlNode* c_node, xmlDoc* c_doc) except NULL:             # <<<<<<<<<<<<<<
@@ -115874,7 +116053,7 @@ static xmlNode *__pyx_f_4lxml_5etree__copyNodeToDoc(xmlNode *__pyx_v_c_node, xml
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_copyNodeToDoc", 0);
 
-  /* "src/lxml/parser.pxi":1767
+  /* "src/lxml/parser.pxi":1778
  *     u"Recursively copy the element into the document. c_doc is not modified."
  *     cdef xmlNode* c_root
  *     c_root = tree.xmlDocCopyNode(c_node, c_doc, 1) # recursive             # <<<<<<<<<<<<<<
@@ -115883,7 +116062,7 @@ static xmlNode *__pyx_f_4lxml_5etree__copyNodeToDoc(xmlNode *__pyx_v_c_node, xml
  */
   __pyx_v_c_root = xmlDocCopyNode(__pyx_v_c_node, __pyx_v_c_doc, 1);
 
-  /* "src/lxml/parser.pxi":1768
+  /* "src/lxml/parser.pxi":1779
  *     cdef xmlNode* c_root
  *     c_root = tree.xmlDocCopyNode(c_node, c_doc, 1) # recursive
  *     if c_root is NULL:             # <<<<<<<<<<<<<<
@@ -115893,16 +116072,16 @@ static xmlNode *__pyx_f_4lxml_5etree__copyNodeToDoc(xmlNode *__pyx_v_c_node, xml
   __pyx_t_1 = ((__pyx_v_c_root == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1769
+    /* "src/lxml/parser.pxi":1780
  *     c_root = tree.xmlDocCopyNode(c_node, c_doc, 1) # recursive
  *     if c_root is NULL:
  *         raise MemoryError()             # <<<<<<<<<<<<<<
  *     _copyTail(c_node.next, c_root)
  *     return c_root
  */
-    PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyErr_NoMemory(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":1768
+    /* "src/lxml/parser.pxi":1779
  *     cdef xmlNode* c_root
  *     c_root = tree.xmlDocCopyNode(c_node, c_doc, 1) # recursive
  *     if c_root is NULL:             # <<<<<<<<<<<<<<
@@ -115911,16 +116090,16 @@ static xmlNode *__pyx_f_4lxml_5etree__copyNodeToDoc(xmlNode *__pyx_v_c_node, xml
  */
   }
 
-  /* "src/lxml/parser.pxi":1770
+  /* "src/lxml/parser.pxi":1781
  *     if c_root is NULL:
  *         raise MemoryError()
  *     _copyTail(c_node.next, c_root)             # <<<<<<<<<<<<<<
  *     return c_root
  * 
  */
-  __pyx_t_2 = __pyx_f_4lxml_5etree__copyTail(__pyx_v_c_node->next, __pyx_v_c_root); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __pyx_f_4lxml_5etree__copyTail(__pyx_v_c_node->next, __pyx_v_c_root); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1771
+  /* "src/lxml/parser.pxi":1782
  *         raise MemoryError()
  *     _copyTail(c_node.next, c_root)
  *     return c_root             # <<<<<<<<<<<<<<
@@ -115930,7 +116109,7 @@ static xmlNode *__pyx_f_4lxml_5etree__copyNodeToDoc(xmlNode *__pyx_v_c_node, xml
   __pyx_r = __pyx_v_c_root;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1764
+  /* "src/lxml/parser.pxi":1775
  *     return result
  * 
  * cdef xmlNode* _copyNodeToDoc(xmlNode* c_node, xmlDoc* c_doc) except NULL:             # <<<<<<<<<<<<<<
@@ -115947,7 +116126,7 @@ static xmlNode *__pyx_f_4lxml_5etree__copyNodeToDoc(xmlNode *__pyx_v_c_node, xml
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1778
+/* "src/lxml/parser.pxi":1789
  * ############################################################
  * 
  * cdef _Document _parseDocument(source, _BaseParser parser, base_url):             # <<<<<<<<<<<<<<
@@ -115973,7 +116152,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
   __Pyx_RefNannySetupContext("_parseDocument", 0);
   __Pyx_INCREF(__pyx_v_base_url);
 
-  /* "src/lxml/parser.pxi":1780
+  /* "src/lxml/parser.pxi":1791
  * cdef _Document _parseDocument(source, _BaseParser parser, base_url):
  *     cdef _Document doc
  *     if _isString(source):             # <<<<<<<<<<<<<<
@@ -115983,22 +116162,22 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
   __pyx_t_1 = (_isString(__pyx_v_source) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1782
+    /* "src/lxml/parser.pxi":1793
  *     if _isString(source):
  *         # parse the file directly from the filesystem
  *         doc = _parseDocumentFromURL(_encodeFilename(source), parser)             # <<<<<<<<<<<<<<
  *         # fix base URL if requested
  *         if base_url is not None:
  */
-    __pyx_t_2 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_source); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_source); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocumentFromURL(__pyx_t_2, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocumentFromURL(__pyx_t_2, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":1784
+    /* "src/lxml/parser.pxi":1795
  *         doc = _parseDocumentFromURL(_encodeFilename(source), parser)
  *         # fix base URL if requested
  *         if base_url is not None:             # <<<<<<<<<<<<<<
@@ -116009,19 +116188,19 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
     __pyx_t_4 = (__pyx_t_1 != 0);
     if (__pyx_t_4) {
 
-      /* "src/lxml/parser.pxi":1785
+      /* "src/lxml/parser.pxi":1796
  *         # fix base URL if requested
  *         if base_url is not None:
  *             base_url = _encodeFilenameUTF8(base_url)             # <<<<<<<<<<<<<<
  *             if doc._c_doc.URL is not NULL:
  *                 tree.xmlFree(<char*>doc._c_doc.URL)
  */
-      __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilenameUTF8(__pyx_v_base_url); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilenameUTF8(__pyx_v_base_url); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_base_url, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "src/lxml/parser.pxi":1786
+      /* "src/lxml/parser.pxi":1797
  *         if base_url is not None:
  *             base_url = _encodeFilenameUTF8(base_url)
  *             if doc._c_doc.URL is not NULL:             # <<<<<<<<<<<<<<
@@ -116031,7 +116210,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
       __pyx_t_4 = ((__pyx_v_doc->_c_doc->URL != NULL) != 0);
       if (__pyx_t_4) {
 
-        /* "src/lxml/parser.pxi":1787
+        /* "src/lxml/parser.pxi":1798
  *             base_url = _encodeFilenameUTF8(base_url)
  *             if doc._c_doc.URL is not NULL:
  *                 tree.xmlFree(<char*>doc._c_doc.URL)             # <<<<<<<<<<<<<<
@@ -116040,7 +116219,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  */
         xmlFree(((char *)__pyx_v_doc->_c_doc->URL));
 
-        /* "src/lxml/parser.pxi":1786
+        /* "src/lxml/parser.pxi":1797
  *         if base_url is not None:
  *             base_url = _encodeFilenameUTF8(base_url)
  *             if doc._c_doc.URL is not NULL:             # <<<<<<<<<<<<<<
@@ -116049,7 +116228,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  */
       }
 
-      /* "src/lxml/parser.pxi":1788
+      /* "src/lxml/parser.pxi":1799
  *             if doc._c_doc.URL is not NULL:
  *                 tree.xmlFree(<char*>doc._c_doc.URL)
  *             doc._c_doc.URL = tree.xmlStrdup(_xcstr(base_url))             # <<<<<<<<<<<<<<
@@ -116058,7 +116237,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  */
       __pyx_v_doc->_c_doc->URL = xmlStrdup((const xmlChar*)PyBytes_AS_STRING(__pyx_v_base_url));
 
-      /* "src/lxml/parser.pxi":1784
+      /* "src/lxml/parser.pxi":1795
  *         doc = _parseDocumentFromURL(_encodeFilename(source), parser)
  *         # fix base URL if requested
  *         if base_url is not None:             # <<<<<<<<<<<<<<
@@ -116067,7 +116246,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  */
     }
 
-    /* "src/lxml/parser.pxi":1789
+    /* "src/lxml/parser.pxi":1800
  *                 tree.xmlFree(<char*>doc._c_doc.URL)
  *             doc._c_doc.URL = tree.xmlStrdup(_xcstr(base_url))
  *         return doc             # <<<<<<<<<<<<<<
@@ -116079,7 +116258,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
     __pyx_r = __pyx_v_doc;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":1780
+    /* "src/lxml/parser.pxi":1791
  * cdef _Document _parseDocument(source, _BaseParser parser, base_url):
  *     cdef _Document doc
  *     if _isString(source):             # <<<<<<<<<<<<<<
@@ -116088,7 +116267,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  */
   }
 
-  /* "src/lxml/parser.pxi":1791
+  /* "src/lxml/parser.pxi":1802
  *         return doc
  * 
  *     if base_url is not None:             # <<<<<<<<<<<<<<
@@ -116099,7 +116278,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
   __pyx_t_1 = (__pyx_t_4 != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1792
+    /* "src/lxml/parser.pxi":1803
  * 
  *     if base_url is not None:
  *         url = base_url             # <<<<<<<<<<<<<<
@@ -116109,7 +116288,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
     __Pyx_INCREF(__pyx_v_base_url);
     __pyx_v_url = __pyx_v_base_url;
 
-    /* "src/lxml/parser.pxi":1791
+    /* "src/lxml/parser.pxi":1802
  *         return doc
  * 
  *     if base_url is not None:             # <<<<<<<<<<<<<<
@@ -116119,7 +116298,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
     goto __pyx_L6;
   }
 
-  /* "src/lxml/parser.pxi":1794
+  /* "src/lxml/parser.pxi":1805
  *         url = base_url
  *     else:
  *         url = _getFilenameForFile(source)             # <<<<<<<<<<<<<<
@@ -116127,41 +116306,41 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  *     if hasattr(source, u'getvalue') and hasattr(source, u'tell'):
  */
   /*else*/ {
-    __pyx_t_3 = __pyx_f_4lxml_5etree__getFilenameForFile(__pyx_v_source); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __pyx_f_4lxml_5etree__getFilenameForFile(__pyx_v_source); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_url = __pyx_t_3;
     __pyx_t_3 = 0;
   }
   __pyx_L6:;
 
-  /* "src/lxml/parser.pxi":1796
+  /* "src/lxml/parser.pxi":1807
  *         url = _getFilenameForFile(source)
  * 
  *     if hasattr(source, u'getvalue') and hasattr(source, u'tell'):             # <<<<<<<<<<<<<<
  *         # StringIO - reading from start?
  *         if source.tell() == 0:
  */
-  __pyx_t_4 = PyObject_HasAttr(__pyx_v_source, __pyx_n_u_getvalue); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyObject_HasAttr(__pyx_v_source, __pyx_n_u_getvalue); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
   } else {
     __pyx_t_1 = __pyx_t_5;
     goto __pyx_L8_bool_binop_done;
   }
-  __pyx_t_5 = PyObject_HasAttr(__pyx_v_source, __pyx_n_u_tell); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyObject_HasAttr(__pyx_v_source, __pyx_n_u_tell); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_4 = (__pyx_t_5 != 0);
   __pyx_t_1 = __pyx_t_4;
   __pyx_L8_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1798
+    /* "src/lxml/parser.pxi":1809
  *     if hasattr(source, u'getvalue') and hasattr(source, u'tell'):
  *         # StringIO - reading from start?
  *         if source.tell() == 0:             # <<<<<<<<<<<<<<
  *             return _parseMemoryDocument(source.getvalue(), url, parser)
  * 
  */
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_tell); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_tell); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_6 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -116174,21 +116353,21 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
       }
     }
     if (__pyx_t_6) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_3, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_3, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1798; __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[6]; __pyx_lineno = 1809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":1799
+      /* "src/lxml/parser.pxi":1810
  *         # StringIO - reading from start?
  *         if source.tell() == 0:
  *             return _parseMemoryDocument(source.getvalue(), url, parser)             # <<<<<<<<<<<<<<
@@ -116196,7 +116375,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  *     # Support for file-like objects (urlgrabber.urlopen, ...)
  */
       __Pyx_XDECREF(((PyObject *)__pyx_r));
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_getvalue); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_getvalue); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_6 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -116209,21 +116388,21 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
         }
       }
       if (__pyx_t_6) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1810; __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 *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_t_2, __pyx_v_url, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_t_2, __pyx_v_url, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_r = ((struct LxmlDocument *)__pyx_t_3);
       __pyx_t_3 = 0;
       goto __pyx_L0;
 
-      /* "src/lxml/parser.pxi":1798
+      /* "src/lxml/parser.pxi":1809
  *     if hasattr(source, u'getvalue') and hasattr(source, u'tell'):
  *         # StringIO - reading from start?
  *         if source.tell() == 0:             # <<<<<<<<<<<<<<
@@ -116232,7 +116411,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  */
     }
 
-    /* "src/lxml/parser.pxi":1796
+    /* "src/lxml/parser.pxi":1807
  *         url = _getFilenameForFile(source)
  * 
  *     if hasattr(source, u'getvalue') and hasattr(source, u'tell'):             # <<<<<<<<<<<<<<
@@ -116241,18 +116420,18 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  */
   }
 
-  /* "src/lxml/parser.pxi":1802
+  /* "src/lxml/parser.pxi":1813
  * 
  *     # Support for file-like objects (urlgrabber.urlopen, ...)
  *     if hasattr(source, u'read'):             # <<<<<<<<<<<<<<
  *         return _parseFilelikeDocument(source, url, parser)
  * 
  */
-  __pyx_t_1 = PyObject_HasAttr(__pyx_v_source, __pyx_n_u_read); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_HasAttr(__pyx_v_source, __pyx_n_u_read); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_4 = (__pyx_t_1 != 0);
   if (__pyx_t_4) {
 
-    /* "src/lxml/parser.pxi":1803
+    /* "src/lxml/parser.pxi":1814
  *     # Support for file-like objects (urlgrabber.urlopen, ...)
  *     if hasattr(source, u'read'):
  *         return _parseFilelikeDocument(source, url, parser)             # <<<<<<<<<<<<<<
@@ -116260,13 +116439,13 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  *     raise TypeError, u"cannot parse from '%s'" % python._fqtypename(source).decode('UTF-8')
  */
     __Pyx_XDECREF(((PyObject *)__pyx_r));
-    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseFilelikeDocument(__pyx_v_source, __pyx_v_url, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseFilelikeDocument(__pyx_v_source, __pyx_v_url, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = ((struct LxmlDocument *)__pyx_t_3);
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":1802
+    /* "src/lxml/parser.pxi":1813
  * 
  *     # Support for file-like objects (urlgrabber.urlopen, ...)
  *     if hasattr(source, u'read'):             # <<<<<<<<<<<<<<
@@ -116275,7 +116454,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  */
   }
 
-  /* "src/lxml/parser.pxi":1805
+  /* "src/lxml/parser.pxi":1816
  *         return _parseFilelikeDocument(source, url, parser)
  * 
  *     raise TypeError, u"cannot parse from '%s'" % python._fqtypename(source).decode('UTF-8')             # <<<<<<<<<<<<<<
@@ -116283,16 +116462,16 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  * cdef _Document _parseDocumentFromURL(url, _BaseParser parser):
  */
   __pyx_t_7 = _fqtypename(__pyx_v_source);
-  __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_7, 0, strlen(__pyx_t_7), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_7, 0, strlen(__pyx_t_7), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_cannot_parse_from_s, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_cannot_parse_from_s, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_2, 0, 0);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1778
+  /* "src/lxml/parser.pxi":1789
  * ############################################################
  * 
  * cdef _Document _parseDocument(source, _BaseParser parser, base_url):             # <<<<<<<<<<<<<<
@@ -116316,7 +116495,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1807
+/* "src/lxml/parser.pxi":1818
  *     raise TypeError, u"cannot parse from '%s'" % python._fqtypename(source).decode('UTF-8')
  * 
  * cdef _Document _parseDocumentFromURL(url, _BaseParser parser):             # <<<<<<<<<<<<<<
@@ -116335,17 +116514,17 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocumentFromURL(PyObject
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_parseDocumentFromURL", 0);
 
-  /* "src/lxml/parser.pxi":1808
+  /* "src/lxml/parser.pxi":1819
  * 
  * cdef _Document _parseDocumentFromURL(url, _BaseParser parser):
  *     c_doc = _parseDocFromFile(url, parser)             # <<<<<<<<<<<<<<
  *     return _documentFactory(c_doc, parser)
  * 
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__parseDocFromFile(__pyx_v_url, __pyx_v_parser); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree__parseDocFromFile(__pyx_v_url, __pyx_v_parser); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_c_doc = __pyx_t_1;
 
-  /* "src/lxml/parser.pxi":1809
+  /* "src/lxml/parser.pxi":1820
  * cdef _Document _parseDocumentFromURL(url, _BaseParser parser):
  *     c_doc = _parseDocFromFile(url, parser)
  *     return _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
@@ -116353,13 +116532,13 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocumentFromURL(PyObject
  * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):
  */
   __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = ((struct LxmlDocument *)__pyx_t_2);
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1807
+  /* "src/lxml/parser.pxi":1818
  *     raise TypeError, u"cannot parse from '%s'" % python._fqtypename(source).decode('UTF-8')
  * 
  * cdef _Document _parseDocumentFromURL(url, _BaseParser parser):             # <<<<<<<<<<<<<<
@@ -116378,7 +116557,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocumentFromURL(PyObject
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1811
+/* "src/lxml/parser.pxi":1822
  *     return _documentFactory(c_doc, parser)
  * 
  * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):             # <<<<<<<<<<<<<<
@@ -116399,7 +116578,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_parseMemoryDocument", 0);
 
-  /* "src/lxml/parser.pxi":1812
+  /* "src/lxml/parser.pxi":1823
  * 
  * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):
  *     if isinstance(text, unicode):             # <<<<<<<<<<<<<<
@@ -116410,31 +116589,31 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1813
+    /* "src/lxml/parser.pxi":1824
  * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):
  *     if isinstance(text, unicode):
  *         if _hasEncodingDeclaration(text):             # <<<<<<<<<<<<<<
  *             raise ValueError(
  *                 u"Unicode strings with encoding declaration are not supported. "
  */
-    __pyx_t_2 = __pyx_f_4lxml_5etree__hasEncodingDeclaration(__pyx_v_text); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __pyx_f_4lxml_5etree__hasEncodingDeclaration(__pyx_v_text); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":1814
+      /* "src/lxml/parser.pxi":1825
  *     if isinstance(text, unicode):
  *         if _hasEncodingDeclaration(text):
  *             raise ValueError(             # <<<<<<<<<<<<<<
  *                 u"Unicode strings with encoding declaration are not supported. "
  *                 u"Please use bytes input or XML fragments without declaration.")
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__63, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/parser.pxi":1813
+      /* "src/lxml/parser.pxi":1824
  * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):
  *     if isinstance(text, unicode):
  *         if _hasEncodingDeclaration(text):             # <<<<<<<<<<<<<<
@@ -116443,7 +116622,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *
  */
     }
 
-    /* "src/lxml/parser.pxi":1812
+    /* "src/lxml/parser.pxi":1823
  * 
  * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):
  *     if isinstance(text, unicode):             # <<<<<<<<<<<<<<
@@ -116453,7 +116632,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":1817
+  /* "src/lxml/parser.pxi":1828
  *                 u"Unicode strings with encoding declaration are not supported. "
  *                 u"Please use bytes input or XML fragments without declaration.")
  *     elif not isinstance(text, bytes):             # <<<<<<<<<<<<<<
@@ -116464,7 +116643,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1818
+    /* "src/lxml/parser.pxi":1829
  *                 u"Please use bytes input or XML fragments without declaration.")
  *     elif not isinstance(text, bytes):
  *         raise ValueError, u"can only parse strings"             # <<<<<<<<<<<<<<
@@ -116472,9 +116651,9 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *
  *     return _documentFactory(c_doc, parser)
  */
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_can_only_parse_strings, 0, 0);
-    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/parser.pxi":1817
+    /* "src/lxml/parser.pxi":1828
  *                 u"Unicode strings with encoding declaration are not supported. "
  *                 u"Please use bytes input or XML fragments without declaration.")
  *     elif not isinstance(text, bytes):             # <<<<<<<<<<<<<<
@@ -116484,17 +116663,17 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":1819
+  /* "src/lxml/parser.pxi":1830
  *     elif not isinstance(text, bytes):
  *         raise ValueError, u"can only parse strings"
  *     c_doc = _parseDoc(text, url, parser)             # <<<<<<<<<<<<<<
  *     return _documentFactory(c_doc, parser)
  * 
  */
-  __pyx_t_4 = __pyx_f_4lxml_5etree__parseDoc(__pyx_v_text, __pyx_v_url, __pyx_v_parser); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __pyx_f_4lxml_5etree__parseDoc(__pyx_v_text, __pyx_v_url, __pyx_v_parser); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_c_doc = __pyx_t_4;
 
-  /* "src/lxml/parser.pxi":1820
+  /* "src/lxml/parser.pxi":1831
  *         raise ValueError, u"can only parse strings"
  *     c_doc = _parseDoc(text, url, parser)
  *     return _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
@@ -116502,13 +116681,13 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *
  * cdef _Document _parseFilelikeDocument(source, url, _BaseParser parser):
  */
   __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = ((struct LxmlDocument *)__pyx_t_3);
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1811
+  /* "src/lxml/parser.pxi":1822
  *     return _documentFactory(c_doc, parser)
  * 
  * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):             # <<<<<<<<<<<<<<
@@ -116527,7 +116706,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1822
+/* "src/lxml/parser.pxi":1833
  *     return _documentFactory(c_doc, parser)
  * 
  * cdef _Document _parseFilelikeDocument(source, url, _BaseParser parser):             # <<<<<<<<<<<<<<
@@ -116546,28 +116725,28 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseFilelikeDocument(PyObject
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_parseFilelikeDocument", 0);
 
-  /* "src/lxml/parser.pxi":1823
+  /* "src/lxml/parser.pxi":1834
  * 
  * cdef _Document _parseFilelikeDocument(source, url, _BaseParser parser):
  *     c_doc = _parseDocFromFilelike(source, url, parser)             # <<<<<<<<<<<<<<
  *     return _documentFactory(c_doc, parser)
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__parseDocFromFilelike(__pyx_v_source, __pyx_v_url, __pyx_v_parser); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree__parseDocFromFilelike(__pyx_v_source, __pyx_v_url, __pyx_v_parser); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_c_doc = __pyx_t_1;
 
-  /* "src/lxml/parser.pxi":1824
+  /* "src/lxml/parser.pxi":1835
  * cdef _Document _parseFilelikeDocument(source, url, _BaseParser parser):
  *     c_doc = _parseDocFromFilelike(source, url, parser)
  *     return _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
  */
   __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = ((struct LxmlDocument *)__pyx_t_2);
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1822
+  /* "src/lxml/parser.pxi":1833
  *     return _documentFactory(c_doc, parser)
  * 
  * cdef _Document _parseFilelikeDocument(source, url, _BaseParser parser):             # <<<<<<<<<<<<<<
@@ -130109,7 +130288,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  */
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_encoding, __pyx_n_s_decode); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__65, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_t_6);
@@ -131814,7 +131993,7 @@ static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__py
  * 
  * cdef void _writeDtdToBuffer(tree.xmlOutputBuffer* c_buffer,
  */
-    xmlOutputBufferWrite(__pyx_v_c_buffer, 4, __pyx_k__65);
+    xmlOutputBufferWrite(__pyx_v_c_buffer, 4, __pyx_k__66);
     break;
   }
 
@@ -132130,7 +132309,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         else:
  *             tree.xmlOutputBufferWrite(c_buffer, 1, '"')
  */
-      xmlOutputBufferWrite(__pyx_v_c_buffer, 2, __pyx_k__66);
+      xmlOutputBufferWrite(__pyx_v_c_buffer, 2, __pyx_k__67);
 
       /* "src/lxml/serializer.pxi":315
  *         tree.xmlOutputBufferWrite(c_buffer, 9, ' PUBLIC "')
@@ -132347,7 +132526,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         return
  * 
  */
-    xmlOutputBufferWrite(__pyx_v_c_buffer, 2, __pyx_k__67);
+    xmlOutputBufferWrite(__pyx_v_c_buffer, 2, __pyx_k__68);
 
     /* "src/lxml/serializer.pxi":335
  *            not c_dtd.pentities):
@@ -132374,7 +132553,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *     if c_dtd.notations and not c_buffer.error:
  *         c_buf = tree.xmlBufferCreate()
  */
-  xmlOutputBufferWrite(__pyx_v_c_buffer, 3, __pyx_k__68);
+  xmlOutputBufferWrite(__pyx_v_c_buffer, 3, __pyx_k__69);
 
   /* "src/lxml/serializer.pxi":338
  * 
@@ -132532,7 +132711,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  * 
  * cdef void _writeTail(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node,
  */
-  xmlOutputBufferWrite(__pyx_v_c_buffer, 3, __pyx_k__69);
+  xmlOutputBufferWrite(__pyx_v_c_buffer, 3, __pyx_k__70);
 
   /* "src/lxml/serializer.pxi":283
  *         tree.xmlOutputBufferWrite(c_buffer, 4, "'?>\n")
@@ -136148,7 +136327,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
         /*finally:*/ {
           /*normal exit:*/{
             if (__pyx_t_10) {
-              __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__70, NULL);
+              __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__71, NULL);
               __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
               if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
               __Pyx_GOTREF(__pyx_t_14);
@@ -137704,7 +137883,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  */
     __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__72, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __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);
@@ -137739,7 +137918,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  */
     __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__72, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__73, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 780; __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);
@@ -138066,7 +138245,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_6write_doctype(s
  */
     __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__73, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__74, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
@@ -139112,7 +139291,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  */
     __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__74, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__75, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 849; __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);
@@ -139292,7 +139471,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  *         self._write_qname(name, prefix)
  * 
  */
-  xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, __pyx_k__75);
+  xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, __pyx_k__76);
 
   /* "src/lxml/serializer.pxi":854
  *         prefix = self._find_prefix(ns, flat_namespace_map, new_namespaces)
@@ -139336,7 +139515,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  *         if not self._buffered:
  *             tree.xmlOutputBufferFlush(self._c_out)
  */
-  xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, __pyx_k__76);
+  xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, __pyx_k__77);
 
   /* "src/lxml/serializer.pxi":860
  * 
@@ -139870,7 +140049,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  *             tree.xmlOutputBufferWriteEscape(self._c_out, _xcstr(value), NULL)
  *             tree.xmlOutputBufferWrite(self._c_out, 1, '"')
  */
-    xmlOutputBufferWrite(__pyx_v_self->_c_out, 2, __pyx_k__77);
+    xmlOutputBufferWrite(__pyx_v_self->_c_out, 2, __pyx_k__78);
 
     /* "src/lxml/serializer.pxi":886
  *             self._write_qname(name, prefix)
@@ -139974,7 +140153,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  */
     __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__78, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__79, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 891; __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);
@@ -140010,10 +140189,10 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
   }
   __pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 0, 2, NULL, NULL, &__pyx_slice__79, 0, 1, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 0, 2, NULL, NULL, &__pyx_slice__80, 0, 1, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 892; __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_PyObject_GetSlice(__pyx_v_element_config, 0, 2, NULL, NULL, &__pyx_slice__80, 0, 1, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_element_config, 0, 2, NULL, NULL, &__pyx_slice__81, 0, 1, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -140033,7 +140212,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  */
     __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__81, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__82, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
@@ -140062,7 +140241,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
   }
   __pyx_t_3 = __Pyx_PyList_Pop(__pyx_v_self->_element_stack); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, 3, NULL, NULL, &__pyx_slice__82, 1, 1, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, 3, NULL, NULL, &__pyx_slice__83, 1, 1, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
@@ -140127,7 +140306,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  *         self._write_qname(name, prefix)
  *         tree.xmlOutputBufferWrite(self._c_out, 1, '>')
  */
-  xmlOutputBufferWrite(__pyx_v_self->_c_out, 2, __pyx_k__83);
+  xmlOutputBufferWrite(__pyx_v_self->_c_out, 2, __pyx_k__84);
 
   /* "src/lxml/serializer.pxi":897
  *         name, prefix = self._element_stack.pop()[1:3]
@@ -140149,7 +140328,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  * 
  *         if not self._element_stack:
  */
-  xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, __pyx_k__76);
+  xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, __pyx_k__77);
 
   /* "src/lxml/serializer.pxi":900
  *         tree.xmlOutputBufferWrite(self._c_out, 1, '>')
@@ -141000,7 +141179,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10write(struct _
  */
           __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__84, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__85, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __Pyx_Raise(__pyx_t_6, 0, 0, 0);
@@ -141113,7 +141292,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10write(struct _
  */
         __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__85, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__86, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_Raise(__pyx_t_3, 0, 0, 0);
@@ -141420,7 +141599,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  */
       __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__86, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__87, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 979; __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);
@@ -141455,7 +141634,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  */
       __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__87, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__88, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 981; __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);
@@ -142087,7 +142266,7 @@ static int __pyx_pw_4lxml_5etree_9iterparse_1__init__(PyObject *__pyx_v_self, Py
   {
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,&__pyx_n_s_events,&__pyx_n_s_tag,&__pyx_n_s_attribute_defaults,&__pyx_n_s_dtd_validation,&__pyx_n_s_load_dtd,&__pyx_n_s_no_network,&__pyx_n_s_remove_blank_text,&__pyx_n_s_compact,&__pyx_n_s_resolve_entities,&__pyx_n_s_remove_comments,&__pyx_n_s_remove_pis,&__pyx_n_s_strip_cdata,&__pyx_n_s_encoding,&__pyx_n_s_html,&__pyx_n_s_recover,&__pyx_n_s_huge_tree,&__pyx_n_s_collect_ids,&__pyx_n_s_schema,0};
     PyObject* values[19] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-    values[1] = ((PyObject *)__pyx_tuple__88);
+    values[1] = ((PyObject *)__pyx_tuple__89);
     values[2] = ((PyObject *)Py_None);
 
     /* "src/lxml/iterparse.pxi":67
@@ -144522,7 +144701,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
  */
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_source, __pyx_n_s_read); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__89, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_data = __pyx_t_2;
@@ -144557,7 +144736,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
  *         if not data:
  *             try:
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__91, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 221; __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;
@@ -144790,7 +144969,7 @@ static int __pyx_pw_4lxml_5etree_8iterwalk_1__init__(PyObject *__pyx_v_self, PyO
   {
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_element_or_tree,&__pyx_n_s_events,&__pyx_n_s_tag,0};
     PyObject* values[3] = {0,0,0};
-    values[1] = ((PyObject *)__pyx_tuple__91);
+    values[1] = ((PyObject *)__pyx_tuple__92);
     values[2] = ((PyObject *)Py_None);
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
@@ -145217,7 +145396,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *             node = self._node_stack[self._index][0]
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_self->_pop_event, __pyx_tuple__92, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_self->_pop_event, __pyx_tuple__93, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_r = __pyx_t_2;
     __pyx_t_2 = 0;
@@ -145604,7 +145783,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  * 
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_self->_pop_event, __pyx_tuple__93, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_self->_pop_event, __pyx_tuple__94, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_r = __pyx_t_2;
       __pyx_t_2 = 0;
@@ -146033,8 +146212,8 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
  *             for i from 0 <= i < ns_count:
  *                 self._events.append(event)
  */
-    __Pyx_INCREF(__pyx_tuple__94);
-    __pyx_v_event = __pyx_tuple__94;
+    __Pyx_INCREF(__pyx_tuple__95);
+    __pyx_v_event = __pyx_tuple__95;
 
     /* "src/lxml/iterparse.pxi":331
  *         if self._event_filter & PARSE_EVENT_FILTER_END_NS:
@@ -146485,7 +146664,7 @@ static PyObject *__pyx_pf_4lxml_5etree_46XMLID(CYTHON_UNUSED PyObject *__pyx_sel
  * 
  *     # ElementTree compatible implementation: parse and look for 'id' attributes
  */
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPath), __pyx_tuple__95, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPath), __pyx_tuple__96, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_XGOTREF(__pyx_v_4lxml_5etree__find_id_attributes);
     __Pyx_DECREF_SET(__pyx_v_4lxml_5etree__find_id_attributes, __pyx_t_3);
@@ -146626,7 +146805,7 @@ static PyObject *__pyx_pf_4lxml_5etree_46XMLID(CYTHON_UNUSED PyObject *__pyx_sel
  */
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__96, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__97, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     if (unlikely(PyDict_SetItem(__pyx_v_dic, __pyx_t_3, __pyx_v_elem) < 0)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -147851,7 +148030,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_14keys(struct __pyx_obj_4lxml_5e
  *     def __iter__(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_self->_keys, 0, 0, NULL, NULL, &__pyx_slice__97, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_self->_keys, 0, 0, NULL, NULL, &__pyx_slice__98, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -148209,7 +148388,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_22items(struct __pyx_obj_4lxml_5
  *     def iteritems(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_self->_items, 0, 0, NULL, NULL, &__pyx_slice__98, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_self->_items, 0, 0, NULL, NULL, &__pyx_slice__99, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -157090,7 +157269,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60Extension(CYTHON_UNUSED PyObject *__pyx
  */
         __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__99, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__100, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -158524,7 +158703,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_groups); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__100, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__101, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_t_5 = NULL;
@@ -158578,7 +158757,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  */
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Element); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__101, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__102, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_root = __pyx_t_3;
@@ -169328,7 +169507,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *                 namespace = (<bytes>namespace).decode('utf8')
  *                 namespaces[prefix.decode('utf8')] = namespace
  */
-      __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_namespace_def, 1, -1L, NULL, NULL, &__pyx_slice__102, 1, 1, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_namespace_def, 1, -1L, NULL, NULL, &__pyx_slice__103, 1, 1, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_XDECREF_SET(__pyx_v_namespace, __pyx_t_1);
       __pyx_t_1 = 0;
@@ -169443,7 +169622,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  */
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_path_utf, __pyx_n_s_decode); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__103, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__104, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_1);
@@ -171642,7 +171821,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_6__repr__(struct __py
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyUnicode_Join(__pyx_kp_u__104, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyUnicode_Join(__pyx_kp_u__105, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -173169,7 +173348,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
     /*finally:*/ {
       /*normal exit:*/{
         if (__pyx_t_6) {
-          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__105, NULL);
+          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__106, NULL);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_10);
@@ -173877,7 +174056,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_8set_global_max_depth(int __pyx_v_m
  *         xslt.xsltMaxDepth = max_depth
  * 
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__106, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__107, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 465; __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;
@@ -178320,7 +178499,7 @@ static PyObject *__pyx_f_4lxml_5etree__findStylesheetByID(struct LxmlDocument *_
  *             u"//xsl:stylesheet[@xml:id = $id]",
  *             namespaces={u"xsl" : u"http://www.w3.org/1999/XSL/Transform"})
  */
-    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPath), __pyx_tuple__107, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPath), __pyx_tuple__108, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_5etree___findStylesheetByID));
@@ -179175,7 +179354,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L5_bool_binop_done;
   }
-  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__76, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__77, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_1 = (__pyx_t_3 != 0);
   __pyx_t_2 = __pyx_t_1;
   __pyx_L5_bool_binop_done:;
@@ -181520,7 +181699,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
                 __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_encode); if (unlikely(!__pyx_t_26)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L42_except_error;}
                 __Pyx_GOTREF(__pyx_t_26);
                 __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
-                __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_tuple__108, NULL); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L42_except_error;}
+                __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_tuple__109, NULL); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L42_except_error;}
                 __Pyx_GOTREF(__pyx_t_25);
                 __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
                 __Pyx_DECREF_SET(__pyx_v_e, __pyx_t_25);
@@ -186545,7 +186724,7 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
         /*finally:*/ {
           /*normal exit:*/{
             if (__pyx_t_7) {
-              __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__109, NULL);
+              __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__110, NULL);
               __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
               if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
               __Pyx_GOTREF(__pyx_t_11);
@@ -186733,7 +186912,7 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
       /*finally:*/ {
         /*normal exit:*/{
           if (__pyx_t_7) {
-            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__110, NULL);
+            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__111, NULL);
             __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
             if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_9);
@@ -187970,7 +188149,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  */
     __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DTDError); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__111, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__112, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
@@ -188122,7 +188301,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
       /*finally:*/ {
         /*normal exit:*/{
           if (__pyx_t_4) {
-            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__112, NULL);
+            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__113, NULL);
             __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
             if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
             __Pyx_GOTREF(__pyx_t_8);
@@ -188410,7 +188589,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
     /*finally:*/ {
       /*normal exit:*/{
         if (__pyx_t_3) {
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__113, NULL);
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__114, NULL);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
@@ -189558,7 +189737,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_endswith); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__114, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__115, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -189585,7 +189764,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  */
           __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_RelaxNGParseError); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_1);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__115, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__116, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
           __Pyx_Raise(__pyx_t_2, 0, 0, 0);
@@ -189781,7 +189960,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
           /*finally:*/ {
             /*normal exit:*/{
               if (__pyx_t_10) {
-                __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__116, NULL);
+                __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__117, NULL);
                 __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
                 if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
                 __Pyx_GOTREF(__pyx_t_14);
@@ -189855,7 +190034,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
     __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_endswith); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_9);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__117, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__118, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -193337,7 +193516,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
       /*finally:*/ {
         /*normal exit:*/{
           if (__pyx_t_8) {
-            __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__118, NULL);
+            __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__119, NULL);
             __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
             if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_12);
@@ -193492,7 +193671,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
       /*finally:*/ {
         /*normal exit:*/{
           if (__pyx_t_8) {
-            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__119, NULL);
+            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__120, NULL);
             __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
             if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L22_error;}
             __Pyx_GOTREF(__pyx_t_10);
@@ -205795,7 +205974,7 @@ static PyTypeObject __pyx_type_4lxml_5etree_XMLParser = {
   0, /*tp_setattro*/
   0, /*tp_as_buffer*/
   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  "XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, XMLSchema schema=None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)\n\n    The XML parser.\n\n    Parsers can be supplied as additional argument to various parse\n    functions of the lxml API.  A default parser is always available\n    and can be replaced by a call to the global function\n    'set_default_parser'.  New parsers can be created at any time\n    without a major run-time overhead.\n\n    The keyword arguments in the constructor are mainly based on the\n    libxml2 parser configuration.  A DTD will also be loaded if DTD\n    validation or attribute default values are requested (unless you\n    additionally provide an XMLSchema from which the default\n    attributes can be read).\n\n    Available boolean keyword arguments:\n\n    - attribute_defaults - inject default attributes from DTD or XMLSchema\n    - dtd_validation     - validate against a DTD referenced by the document\n    - load_dtd           - use DTD for parsing\n    - no_network         - prevent network access for related files (default: True)\n    - ns_clean           - clean up redundant namespace declarations\n    - recover            - try hard to parse through broken XML\n    - remove_blank_text  - discard blank text nodes that appear ignorable\n    - remove_comments    - discard comments\n    - remove_pis         - discard processing instructions\n    - strip_cdata        - replace CDATA sections by normal text content (default: True)\n    - compact            - save memory for short text content (default: True)\n    - collect_ids        - create a hash table of XML IDs (default: True, always True with DTD validation)\n    - resolve_entities   - replace entities by their text value (default: True)\n    - huge_tree          - disable security restrictions and support very deep trees\n                           and very long text content (only affects libxml2 2.7+)\n\n    Other keyword arguments:\n\n    - encoding - override the document encoding\n    - target   - a parser target object that will receive the parse events\n    - schema   - an XMLSchema to validate against\n\n    Note that you should avoid sharing parsers between threads.  While this is\n    not harmful, it is more efficient to use separate parsers.  This does not\n    apply to the default parser.\n    ", /*tp_doc*/
+  "XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)\n\n    The XML parser.\n\n    Parsers can be supplied as additional argument to various parse\n    functions of the lxml API.  A default parser is always available\n    and can be replaced by a call to the global function\n    'set_default_parser'.  New parsers can be created at any time\n    without a major run-time overhead.\n\n    The keyword arguments in the constructor are mainly based on the\n    libxml2 parser configuration.  A DTD will also be loaded if DTD\n    validation or attribute default values are requested (unless you\n    additionally provide an XMLSchema from which the default\n    attributes can be read).\n\n    Available boolean keyword arguments:\n\n    - attribute_defaults - inject default attributes from DTD or XMLSchema\n    - dtd_validation     - validate against a DTD referenced by the document\n    - load_dtd           - use DTD for parsing\n    - no_network         - prevent network access for related files (default: True)\n    - ns_clean           - clean up redundant namespace declarations\n    - recover            - try hard to parse through broken XML\n    - remove_blank_text  - discard blank text nodes that appear ignorable\n    - remove_comments    - discard comments\n    - remove_pis         - discard processing instructions\n    - strip_cdata        - replace CDATA sections by normal text content (default: True)\n    - compact            - save memory for short text content (default: True)\n    - collect_ids        - create a hash table of XML IDs (default: True, always True with DTD validation)\n    - resolve_entities   - replace entities by their text value (default: True)\n    - huge_tree          - disable security restrictions and support very deep trees\n                           and very long text content (only affects libxml2 2.7+)\n\n    Other keyword arguments:\n\n    - encoding - override the document encoding\n    - target   - a parser target object that will receive the parse events\n    - schema   - an XMLSchema to validate against\n\n    Note that you should avoid sharing parsers between threads.  While this is\n    not harmful, it is more efficient to use separate parsers.  This does not\n    apply to the default parser.\n    ", /*tp_doc*/
   __pyx_tp_traverse_4lxml_5etree__BaseParser, /*tp_traverse*/
   __pyx_tp_clear_4lxml_5etree__BaseParser, /*tp_clear*/
   0, /*tp_richcompare*/
@@ -206012,7 +206191,7 @@ static PyTypeObject __pyx_type_4lxml_5etree_HTMLParser = {
   0, /*tp_setattro*/
   0, /*tp_as_buffer*/
   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  "HTMLParser(self, encoding=None, remove_blank_text=False,                    remove_comments=False, remove_pis=False, strip_cdata=True,                    no_network=True, target=None, XMLSchema schema=None,                    recover=True, compact=True)\n\n    The HTML parser.\n\n    This parser allows reading HTML into a normal XML tree.  By\n    default, it can read broken (non well-formed) HTML, depending on\n    the capabilities of libxml2.  Use the 'recover' option to switch\n    this off.\n\n    Available boolean keyword arguments:\n\n    - recover            - try hard to parse through broken HTML (default: True)\n    - no_network         - prevent network access for related files (default: True)\n    - remove_blank_text  - discard empty text nodes that are ignorable (i.e. not actual text content)\n    - remove_comments    - discard comments\n    - remove_pis         - discard processing instructions\n    - strip_cdata        - replace CDATA sections by normal text content (default: True)\n    - compact            - save memory for short text content (default: True)\n\n    Other keyword arguments:\n\n    - encoding - override the document encoding\n    - target   - a parser target object that will receive the parse events\n    - schema   - an XMLSchema to validate against\n\n    Note that you should avoid sharing parsers between threads for performance\n    reasons.\n    ", /*tp_doc*/
+  "HTMLParser(self, encoding=None, remove_blank_text=False,                    remove_comments=False, remove_pis=False, strip_cdata=True,                    no_network=True, target=None, schema: XMLSchema =None,                    recover=True, compact=True)\n\n    The HTML parser.\n\n    This parser allows reading HTML into a normal XML tree.  By\n    default, it can read broken (non well-formed) HTML, depending on\n    the capabilities of libxml2.  Use the 'recover' option to switch\n    this off.\n\n    Available boolean keyword arguments:\n\n    - recover            - try hard to parse through broken HTML (default: True)\n    - no_network         - prevent network access for related files (default: True)\n    - remove_blank_text  - discard empty text nodes that are ignorable (i.e. not actual text content)\n    - remove_comments    - discard comments\n    - remove_pis         - discard processing instructions\n    - strip_cdata        - replace CDATA sections by normal text content (default: True)\n    - compact            - save memory for short text content (default: True)\n\n    Other keyword arguments:\n\n    - encoding - override the document encoding\n    - target   - a parser target object that will receive the parse events\n    - schema   - an XMLSchema to validate against\n\n    Note that you should avoid sharing parsers between threads for performance\n    reasons.\n    ", /*tp_doc*/
   __pyx_tp_traverse_4lxml_5etree__BaseParser, /*tp_traverse*/
   __pyx_tp_clear_4lxml_5etree__BaseParser, /*tp_clear*/
   0, /*tp_richcompare*/
@@ -211272,14 +211451,14 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_XSLT_set_global_max_depth, __pyx_k_XSLT_set_global_max_depth, sizeof(__pyx_k_XSLT_set_global_max_depth), 0, 0, 1, 1},
   {&__pyx_n_s_XSLT_strparam, __pyx_k_XSLT_strparam, sizeof(__pyx_k_XSLT_strparam), 0, 0, 1, 1},
   {&__pyx_kp_s_XSLT_stylesheet_not_initialised, __pyx_k_XSLT_stylesheet_not_initialised, sizeof(__pyx_k_XSLT_stylesheet_not_initialised), 0, 0, 1, 0},
-  {&__pyx_kp_u__104, __pyx_k__104, sizeof(__pyx_k__104), 0, 1, 0, 0},
+  {&__pyx_kp_u__105, __pyx_k__105, sizeof(__pyx_k__105), 0, 1, 0, 0},
   {&__pyx_kp_u__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 1, 0, 0},
   {&__pyx_kp_b__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 0, 0, 0},
   {&__pyx_kp_s__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 0, 1, 0},
   {&__pyx_kp_u__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 1, 0, 0},
   {&__pyx_kp_b__23, __pyx_k__23, sizeof(__pyx_k__23), 0, 0, 0, 0},
-  {&__pyx_kp_b__233, __pyx_k__233, sizeof(__pyx_k__233), 0, 0, 0, 0},
-  {&__pyx_kp_b__235, __pyx_k__235, sizeof(__pyx_k__235), 0, 0, 0, 0},
+  {&__pyx_kp_b__234, __pyx_k__234, sizeof(__pyx_k__234), 0, 0, 0, 0},
+  {&__pyx_kp_b__236, __pyx_k__236, sizeof(__pyx_k__236), 0, 0, 0, 0},
   {&__pyx_kp_s__24, __pyx_k__24, sizeof(__pyx_k__24), 0, 0, 1, 0},
   {&__pyx_kp_u__24, __pyx_k__24, sizeof(__pyx_k__24), 0, 1, 0, 0},
   {&__pyx_kp_b__28, __pyx_k__28, sizeof(__pyx_k__28), 0, 0, 0, 0},
@@ -211304,7 +211483,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_kp_b__50, __pyx_k__50, sizeof(__pyx_k__50), 0, 0, 0, 0},
   {&__pyx_n_s__60, __pyx_k__60, sizeof(__pyx_k__60), 0, 0, 1, 1},
   {&__pyx_n_u__60, __pyx_k__60, sizeof(__pyx_k__60), 0, 1, 0, 1},
-  {&__pyx_kp_u__76, __pyx_k__76, sizeof(__pyx_k__76), 0, 1, 0, 0},
+  {&__pyx_kp_u__77, __pyx_k__77, sizeof(__pyx_k__77), 0, 1, 0, 0},
   {&__pyx_n_s_abspath, __pyx_k_abspath, sizeof(__pyx_k_abspath), 0, 0, 1, 1},
   {&__pyx_n_s_accepted_domains, __pyx_k_accepted_domains, sizeof(__pyx_k_accepted_domains), 0, 0, 1, 1},
   {&__pyx_n_s_access_control, __pyx_k_access_control, sizeof(__pyx_k_access_control), 0, 0, 1, 1},
@@ -211895,7 +212074,7 @@ static int __Pyx_InitCachedBuiltins(void) {
   __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_Exception = __Pyx_GetBuiltinName(__pyx_n_s_Exception); if (!__pyx_builtin_Exception) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_SyntaxError = __Pyx_GetBuiltinName(__pyx_n_s_SyntaxError); if (!__pyx_builtin_SyntaxError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_staticmethod = __Pyx_GetBuiltinName(__pyx_n_s_staticmethod); if (!__pyx_builtin_staticmethod) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -211917,8 +212096,8 @@ static int __Pyx_InitCachedBuiltins(void) {
   __pyx_builtin_NotImplemented = __Pyx_GetBuiltinName(__pyx_n_s_NotImplemented); if (!__pyx_builtin_NotImplemented) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s_StopIteration); if (!__pyx_builtin_StopIteration) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_ReferenceError = __Pyx_GetBuiltinName(__pyx_n_s_ReferenceError); if (!__pyx_builtin_ReferenceError) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_IOError = __Pyx_GetBuiltinName(__pyx_n_s_IOError); if (!__pyx_builtin_IOError) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_LookupError = __Pyx_GetBuiltinName(__pyx_n_s_LookupError); if (!__pyx_builtin_LookupError) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_IOError = __Pyx_GetBuiltinName(__pyx_n_s_IOError); if (!__pyx_builtin_IOError) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_LookupError = __Pyx_GetBuiltinName(__pyx_n_s_LookupError); if (!__pyx_builtin_LookupError) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_open = __Pyx_GetBuiltinName(__pyx_n_s_open); if (!__pyx_builtin_open) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_BaseException = __Pyx_GetBuiltinName(__pyx_n_s_BaseException); if (!__pyx_builtin_BaseException) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -212106,25 +212285,25 @@ static int __Pyx_InitCachedConstants(void) {
   __Pyx_GOTREF(__pyx_tuple__22);
   __Pyx_GIVEREF(__pyx_tuple__22);
 
-  /* "src/lxml/xmlerror.pxi":557
+  /* "src/lxml/xmlerror.pxi":567
  *     except KeyError:
  *         log = (<object>thread_dict)[u"_GlobalErrorLog"] = \
  *               _RotatingErrorLog(__MAX_LOG_SIZE)             # <<<<<<<<<<<<<<
  *         return log
  * 
  */
-  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_int_100); if (unlikely(!__pyx_tuple__25)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_int_100); if (unlikely(!__pyx_tuple__25)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__25);
   __Pyx_GIVEREF(__pyx_tuple__25);
 
-  /* "src/lxml/xmlerror.pxi":697
+  /* "src/lxml/xmlerror.pxi":707
  *     u"Called at setup time to parse the constants and build the classes below."
  *     global __ERROR_LEVELS, __ERROR_DOMAINS, __PARSER_ERROR_TYPES, __RELAXNG_ERROR_TYPES
  *     find_constants = re.compile(ur"\s*([a-zA-Z0-9_]+)\s*=\s*([0-9]+)").findall             # <<<<<<<<<<<<<<
  *     const_defs = ((ErrorLevels,          __ERROR_LEVELS),
  *                   (ErrorDomains,         __ERROR_DOMAINS),
  */
-  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_u_s_a_zA_Z0_9__s_s_0_9); if (unlikely(!__pyx_tuple__26)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_u_s_a_zA_Z0_9__s_s_0_9); if (unlikely(!__pyx_tuple__26)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__26);
   __Pyx_GIVEREF(__pyx_tuple__26);
 
@@ -212381,38 +212560,49 @@ static int __Pyx_InitCachedConstants(void) {
   __Pyx_GOTREF(__pyx_slice__59);
   __Pyx_GIVEREF(__pyx_slice__59);
 
-  /* "src/lxml/parser.pxi":1497
+  /* "src/lxml/parser.pxi":453
+ *             elif not isinstance(filename, bytes):
+ *                 # most likely a text URL
+ *                 filename = filename.encode('utf8')             # <<<<<<<<<<<<<<
+ *                 if not isinstance(filename, bytes):
+ *                     filename = None
+ */
+  __pyx_tuple__61 = PyTuple_Pack(1, __pyx_n_s_utf8); if (unlikely(!__pyx_tuple__61)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__61);
+  __Pyx_GIVEREF(__pyx_tuple__61);
+
+  /* "src/lxml/parser.pxi":1508
  *         XMLParser.__init__(self, **kwargs)
  *         if events is None:
  *             events = ('end',)             # <<<<<<<<<<<<<<
  *         self._setBaseURL(base_url)
  *         self._collectEvents(events, tag)
  */
-  __pyx_tuple__61 = PyTuple_Pack(1, __pyx_n_s_end); if (unlikely(!__pyx_tuple__61)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__61);
-  __Pyx_GIVEREF(__pyx_tuple__61);
+  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_n_s_end); if (unlikely(!__pyx_tuple__62)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__62);
+  __Pyx_GIVEREF(__pyx_tuple__62);
 
-  /* "src/lxml/parser.pxi":1661
+  /* "src/lxml/parser.pxi":1672
  *         HTMLParser.__init__(self, **kwargs)
  *         if events is None:
  *             events = ('end',)             # <<<<<<<<<<<<<<
  *         self._setBaseURL(base_url)
  *         self._collectEvents(events, tag)
  */
-  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_n_s_end); if (unlikely(!__pyx_tuple__62)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__62);
-  __Pyx_GIVEREF(__pyx_tuple__62);
+  __pyx_tuple__63 = PyTuple_Pack(1, __pyx_n_s_end); if (unlikely(!__pyx_tuple__63)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__63);
+  __Pyx_GIVEREF(__pyx_tuple__63);
 
-  /* "src/lxml/parser.pxi":1814
+  /* "src/lxml/parser.pxi":1825
  *     if isinstance(text, unicode):
  *         if _hasEncodingDeclaration(text):
  *             raise ValueError(             # <<<<<<<<<<<<<<
  *                 u"Unicode strings with encoding declaration are not supported. "
  *                 u"Please use bytes input or XML fragments without declaration.")
  */
-  __pyx_tuple__63 = PyTuple_Pack(1, __pyx_kp_u_Unicode_strings_with_encoding_de); if (unlikely(!__pyx_tuple__63)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__63);
-  __Pyx_GIVEREF(__pyx_tuple__63);
+  __pyx_tuple__64 = PyTuple_Pack(1, __pyx_kp_u_Unicode_strings_with_encoding_de); if (unlikely(!__pyx_tuple__64)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__64);
+  __Pyx_GIVEREF(__pyx_tuple__64);
 
   /* "src/lxml/serializer.pxi":115
  *     if enchandler is NULL and c_enc is not NULL:
@@ -212421,9 +212611,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         raise LookupError, u"unknown encoding: '%s'" % encoding
  *     c_buffer = tree.xmlAllocOutputBuffer(enchandler)
  */
-  __pyx_tuple__64 = PyTuple_Pack(1, __pyx_kp_s_UTF_8); if (unlikely(!__pyx_tuple__64)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__64);
-  __Pyx_GIVEREF(__pyx_tuple__64);
+  __pyx_tuple__65 = PyTuple_Pack(1, __pyx_kp_s_UTF_8); if (unlikely(!__pyx_tuple__65)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__65);
+  __Pyx_GIVEREF(__pyx_tuple__65);
 
   /* "src/lxml/serializer.pxi":624
  *             writer   = _FilelikeWriter(f, compression=compression)
@@ -212432,9 +212622,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 bytes_count = c14n.xmlC14NDocSaveTo(
  *                     c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
  */
-  __pyx_tuple__70 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__70)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__70);
-  __Pyx_GIVEREF(__pyx_tuple__70);
+  __pyx_tuple__71 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__71)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__71);
+  __Pyx_GIVEREF(__pyx_tuple__71);
 
   /* "src/lxml/serializer.pxi":778
  *         cdef int c_standalone
@@ -212443,9 +212633,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self._status >= WRITER_DECL_WRITTEN:
  *             raise LxmlSyntaxError("XML declaration already written")
  */
-  __pyx_tuple__71 = PyTuple_Pack(1, __pyx_kp_s_only_XML_documents_have_declarat); if (unlikely(!__pyx_tuple__71)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__71);
-  __Pyx_GIVEREF(__pyx_tuple__71);
+  __pyx_tuple__72 = PyTuple_Pack(1, __pyx_kp_s_only_XML_documents_have_declarat); if (unlikely(!__pyx_tuple__72)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__72);
+  __Pyx_GIVEREF(__pyx_tuple__72);
 
   /* "src/lxml/serializer.pxi":780
  *             raise LxmlSyntaxError("only XML documents have declarations")
@@ -212454,9 +212644,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         version = _utf8orNone(version)
  *         c_version = _xcstr(version) if version is not None else NULL
  */
-  __pyx_tuple__72 = PyTuple_Pack(1, __pyx_kp_s_XML_declaration_already_written); if (unlikely(!__pyx_tuple__72)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__72);
-  __Pyx_GIVEREF(__pyx_tuple__72);
+  __pyx_tuple__73 = PyTuple_Pack(1, __pyx_kp_s_XML_declaration_already_written); if (unlikely(!__pyx_tuple__73)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__73);
+  __Pyx_GIVEREF(__pyx_tuple__73);
 
   /* "src/lxml/serializer.pxi":807
  *             return
@@ -212465,9 +212655,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         doctype = _utf8(doctype)
  *         _writeDoctype(self._c_out, _xcstr(doctype))
  */
-  __pyx_tuple__73 = PyTuple_Pack(1, __pyx_kp_s_DOCTYPE_already_written_or_canno); if (unlikely(!__pyx_tuple__73)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__73);
-  __Pyx_GIVEREF(__pyx_tuple__73);
+  __pyx_tuple__74 = PyTuple_Pack(1, __pyx_kp_s_DOCTYPE_already_written_or_canno); if (unlikely(!__pyx_tuple__74)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__74);
+  __Pyx_GIVEREF(__pyx_tuple__74);
 
   /* "src/lxml/serializer.pxi":849
  *     cdef _write_start_element(self, element_config):
@@ -212476,9 +212666,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         ns, name, attributes, nsmap = element_config
  *         flat_namespace_map, new_namespaces = self._collect_namespaces(nsmap)
  */
-  __pyx_tuple__74 = PyTuple_Pack(1, __pyx_kp_s_cannot_append_trailing_element_t); if (unlikely(!__pyx_tuple__74)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__74);
-  __Pyx_GIVEREF(__pyx_tuple__74);
+  __pyx_tuple__75 = PyTuple_Pack(1, __pyx_kp_s_cannot_append_trailing_element_t); if (unlikely(!__pyx_tuple__75)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__75);
+  __Pyx_GIVEREF(__pyx_tuple__75);
 
   /* "src/lxml/serializer.pxi":891
  *     cdef _write_end_element(self, element_config):
@@ -212487,9 +212677,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if not self._element_stack or self._element_stack[-1][:2] != element_config[:2]:
  *             raise LxmlSyntaxError("inconsistent exit action in context manager")
  */
-  __pyx_tuple__78 = PyTuple_Pack(1, __pyx_kp_s_not_in_an_element); if (unlikely(!__pyx_tuple__78)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__78);
-  __Pyx_GIVEREF(__pyx_tuple__78);
+  __pyx_tuple__79 = PyTuple_Pack(1, __pyx_kp_s_not_in_an_element); if (unlikely(!__pyx_tuple__79)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__79);
+  __Pyx_GIVEREF(__pyx_tuple__79);
 
   /* "src/lxml/serializer.pxi":892
  *         if self._status != WRITER_IN_ELEMENT:
@@ -212498,12 +212688,12 @@ static int __Pyx_InitCachedConstants(void) {
  *             raise LxmlSyntaxError("inconsistent exit action in context manager")
  * 
  */
-  __pyx_slice__79 = PySlice_New(Py_None, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__79)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__79);
-  __Pyx_GIVEREF(__pyx_slice__79);
   __pyx_slice__80 = PySlice_New(Py_None, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__80)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__80);
   __Pyx_GIVEREF(__pyx_slice__80);
+  __pyx_slice__81 = PySlice_New(Py_None, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__81)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__81);
+  __Pyx_GIVEREF(__pyx_slice__81);
 
   /* "src/lxml/serializer.pxi":893
  *             raise LxmlSyntaxError("not in an element")
@@ -212512,9 +212702,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  *         name, prefix = self._element_stack.pop()[1:3]
  */
-  __pyx_tuple__81 = PyTuple_Pack(1, __pyx_kp_s_inconsistent_exit_action_in_cont); if (unlikely(!__pyx_tuple__81)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__81);
-  __Pyx_GIVEREF(__pyx_tuple__81);
+  __pyx_tuple__82 = PyTuple_Pack(1, __pyx_kp_s_inconsistent_exit_action_in_cont); if (unlikely(!__pyx_tuple__82)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__82);
+  __Pyx_GIVEREF(__pyx_tuple__82);
 
   /* "src/lxml/serializer.pxi":895
  *             raise LxmlSyntaxError("inconsistent exit action in context manager")
@@ -212523,9 +212713,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         tree.xmlOutputBufferWrite(self._c_out, 2, '</')
  *         self._write_qname(name, prefix)
  */
-  __pyx_slice__82 = PySlice_New(__pyx_int_1, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__82)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__82);
-  __Pyx_GIVEREF(__pyx_slice__82);
+  __pyx_slice__83 = PySlice_New(__pyx_int_1, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__83)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__83);
+  __Pyx_GIVEREF(__pyx_slice__83);
 
   /* "src/lxml/serializer.pxi":950
  *                 if self._status != WRITER_IN_ELEMENT:
@@ -212534,9 +212724,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 content = _utf8(content)
  *                 tree.xmlOutputBufferWriteEscape(self._c_out, _xcstr(content), NULL)
  */
-  __pyx_tuple__84 = PyTuple_Pack(1, __pyx_kp_s_not_in_an_element); if (unlikely(!__pyx_tuple__84)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__84);
-  __Pyx_GIVEREF(__pyx_tuple__84);
+  __pyx_tuple__85 = PyTuple_Pack(1, __pyx_kp_s_not_in_an_element); if (unlikely(!__pyx_tuple__85)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__85);
+  __Pyx_GIVEREF(__pyx_tuple__85);
 
   /* "src/lxml/serializer.pxi":955
  *             elif iselement(content):
@@ -212545,9 +212735,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 _writeNodeToBuffer(self._c_out, (<_Element>content)._c_node,
  *                                    self._c_encoding, NULL, self._method,
  */
-  __pyx_tuple__85 = PyTuple_Pack(1, __pyx_kp_s_cannot_append_trailing_element_t); if (unlikely(!__pyx_tuple__85)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__85);
-  __Pyx_GIVEREF(__pyx_tuple__85);
+  __pyx_tuple__86 = PyTuple_Pack(1, __pyx_kp_s_cannot_append_trailing_element_t); if (unlikely(!__pyx_tuple__86)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__86);
+  __Pyx_GIVEREF(__pyx_tuple__86);
 
   /* "src/lxml/serializer.pxi":979
  *         if raise_on_error:
@@ -212556,9 +212746,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             if self._element_stack:
  *                 raise LxmlSyntaxError("pending open tags on close")
  */
-  __pyx_tuple__86 = PyTuple_Pack(1, __pyx_kp_s_no_content_written); if (unlikely(!__pyx_tuple__86)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__86);
-  __Pyx_GIVEREF(__pyx_tuple__86);
+  __pyx_tuple__87 = PyTuple_Pack(1, __pyx_kp_s_no_content_written); if (unlikely(!__pyx_tuple__87)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__87);
+  __Pyx_GIVEREF(__pyx_tuple__87);
 
   /* "src/lxml/serializer.pxi":981
  *                 raise LxmlSyntaxError("no content written")
@@ -212567,9 +212757,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         error_result = self._c_out.error
  *         if error_result == xmlerror.XML_ERR_OK:
  */
-  __pyx_tuple__87 = PyTuple_Pack(1, __pyx_kp_s_pending_open_tags_on_close); if (unlikely(!__pyx_tuple__87)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__87);
-  __Pyx_GIVEREF(__pyx_tuple__87);
+  __pyx_tuple__88 = PyTuple_Pack(1, __pyx_kp_s_pending_open_tags_on_close); if (unlikely(!__pyx_tuple__88)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__88);
+  __Pyx_GIVEREF(__pyx_tuple__88);
 
   /* "src/lxml/iterparse.pxi":66
  *     cdef bint _close_source_after_read
@@ -212578,9 +212768,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                  attribute_defaults=False, dtd_validation=False,
  *                  load_dtd=False, no_network=True, remove_blank_text=False,
  */
-  __pyx_tuple__88 = PyTuple_Pack(1, __pyx_n_u_end); if (unlikely(!__pyx_tuple__88)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__88);
-  __Pyx_GIVEREF(__pyx_tuple__88);
+  __pyx_tuple__89 = PyTuple_Pack(1, __pyx_n_u_end); if (unlikely(!__pyx_tuple__89)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__89);
+  __Pyx_GIVEREF(__pyx_tuple__89);
 
   /* "src/lxml/iterparse.pxi":218
  *     @cython.final
@@ -212589,9 +212779,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if not isinstance(data, bytes):
  *             self._close_source()
  */
-  __pyx_tuple__89 = PyTuple_Pack(1, __pyx_int_32768); if (unlikely(!__pyx_tuple__89)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__89);
-  __Pyx_GIVEREF(__pyx_tuple__89);
+  __pyx_tuple__90 = PyTuple_Pack(1, __pyx_int_32768); if (unlikely(!__pyx_tuple__90)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__90);
+  __Pyx_GIVEREF(__pyx_tuple__90);
 
   /* "src/lxml/iterparse.pxi":221
  *         if not isinstance(data, bytes):
@@ -212600,9 +212790,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if not data:
  *             try:
  */
-  __pyx_tuple__90 = PyTuple_Pack(1, __pyx_kp_s_reading_file_objects_must_return); if (unlikely(!__pyx_tuple__90)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__90);
-  __Pyx_GIVEREF(__pyx_tuple__90);
+  __pyx_tuple__91 = PyTuple_Pack(1, __pyx_kp_s_reading_file_objects_must_return); if (unlikely(!__pyx_tuple__91)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__91);
+  __Pyx_GIVEREF(__pyx_tuple__91);
 
   /* "src/lxml/iterparse.pxi":245
  *     cdef int    _event_filter
@@ -212611,9 +212801,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         cdef _Element root
  *         cdef int ns_count
  */
-  __pyx_tuple__91 = PyTuple_Pack(1, __pyx_n_u_end); if (unlikely(!__pyx_tuple__91)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__91);
-  __Pyx_GIVEREF(__pyx_tuple__91);
+  __pyx_tuple__92 = PyTuple_Pack(1, __pyx_n_u_end); if (unlikely(!__pyx_tuple__92)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__92);
+  __Pyx_GIVEREF(__pyx_tuple__92);
 
   /* "src/lxml/iterparse.pxi":274
  *         cdef int ns_count = 0
@@ -212622,9 +212812,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self._matcher is not None and self._index >= 0:
  *             node = self._node_stack[self._index][0]
  */
-  __pyx_tuple__92 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__92)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__92);
-  __Pyx_GIVEREF(__pyx_tuple__92);
+  __pyx_tuple__93 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__93)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__93);
+  __Pyx_GIVEREF(__pyx_tuple__93);
 
   /* "src/lxml/iterparse.pxi":306
  *                 self._index += 1
@@ -212633,9 +212823,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         raise StopIteration
  * 
  */
-  __pyx_tuple__93 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__93)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__93);
-  __Pyx_GIVEREF(__pyx_tuple__93);
+  __pyx_tuple__94 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__94)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__94);
+  __Pyx_GIVEREF(__pyx_tuple__94);
 
   /* "src/lxml/iterparse.pxi":330
  *                 self._events.append( (u"end", node) )
@@ -212644,9 +212834,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             for i from 0 <= i < ns_count:
  *                 self._events.append(event)
  */
-  __pyx_tuple__94 = PyTuple_Pack(2, __pyx_kp_u_end_ns, Py_None); if (unlikely(!__pyx_tuple__94)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__94);
-  __Pyx_GIVEREF(__pyx_tuple__94);
+  __pyx_tuple__95 = PyTuple_Pack(2, __pyx_kp_u_end_ns, Py_None); if (unlikely(!__pyx_tuple__95)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__95);
+  __Pyx_GIVEREF(__pyx_tuple__95);
 
   /* "src/lxml/xmlid.pxi":15
  *     global _find_id_attributes
@@ -212655,9 +212845,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  *     # ElementTree compatible implementation: parse and look for 'id' attributes
  */
-  __pyx_tuple__95 = PyTuple_Pack(1, __pyx_kp_u_string_id); if (unlikely(!__pyx_tuple__95)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__95);
-  __Pyx_GIVEREF(__pyx_tuple__95);
+  __pyx_tuple__96 = PyTuple_Pack(1, __pyx_kp_u_string_id); if (unlikely(!__pyx_tuple__96)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__96);
+  __Pyx_GIVEREF(__pyx_tuple__96);
 
   /* "src/lxml/xmlid.pxi":21
  *     dic = {}
@@ -212666,9 +212856,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     return (root, dic)
  * 
  */
-  __pyx_tuple__96 = PyTuple_Pack(1, __pyx_n_u_id); if (unlikely(!__pyx_tuple__96)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__96);
-  __Pyx_GIVEREF(__pyx_tuple__96);
+  __pyx_tuple__97 = PyTuple_Pack(1, __pyx_n_u_id); if (unlikely(!__pyx_tuple__97)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__97);
+  __Pyx_GIVEREF(__pyx_tuple__97);
 
   /* "src/lxml/xmlid.pxi":114
  *         if self._keys is None:
@@ -212677,9 +212867,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  *     def __iter__(self):
  */
-  __pyx_slice__97 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__97)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__97);
-  __Pyx_GIVEREF(__pyx_slice__97);
+  __pyx_slice__98 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__98)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__98);
+  __Pyx_GIVEREF(__pyx_slice__98);
 
   /* "src/lxml/xmlid.pxi":132
  *         if self._items is None:
@@ -212688,9 +212878,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  *     def iteritems(self):
  */
-  __pyx_slice__98 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__98)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__98);
-  __Pyx_GIVEREF(__pyx_slice__98);
+  __pyx_slice__99 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__99)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__99);
+  __Pyx_GIVEREF(__pyx_slice__99);
 
   /* "src/lxml/extensions.pxi":448
  *         if function_mapping is None:
@@ -212699,9 +212889,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         for function_name in function_mapping:
  *             functions[(ns, function_name)] = getattr(module, function_name)
  */
-  __pyx_tuple__99 = PyTuple_Pack(1, __pyx_n_u__60); if (unlikely(!__pyx_tuple__99)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__99);
-  __Pyx_GIVEREF(__pyx_tuple__99);
+  __pyx_tuple__100 = PyTuple_Pack(1, __pyx_n_u__60); if (unlikely(!__pyx_tuple__100)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__100);
+  __Pyx_GIVEREF(__pyx_tuple__100);
 
   /* "src/lxml/extensions.pxi":523
  *                 return ()
@@ -212710,9 +212900,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         result_list = []
  *         root = Element(u'matches')
  */
-  __pyx_tuple__100 = PyTuple_Pack(1, __pyx_kp_u__15); if (unlikely(!__pyx_tuple__100)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__100);
-  __Pyx_GIVEREF(__pyx_tuple__100);
+  __pyx_tuple__101 = PyTuple_Pack(1, __pyx_kp_u__15); if (unlikely(!__pyx_tuple__101)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__101);
+  __Pyx_GIVEREF(__pyx_tuple__101);
 
   /* "src/lxml/extensions.pxi":525
  *             results.extend( result.groups(u'') )
@@ -212721,9 +212911,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         join_groups = u''.join
  *         for s_match in results:
  */
-  __pyx_tuple__101 = PyTuple_Pack(1, __pyx_n_u_matches); if (unlikely(!__pyx_tuple__101)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__101);
-  __Pyx_GIVEREF(__pyx_tuple__101);
+  __pyx_tuple__102 = PyTuple_Pack(1, __pyx_n_u_matches); if (unlikely(!__pyx_tuple__102)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__102);
+  __Pyx_GIVEREF(__pyx_tuple__102);
 
   /* "src/lxml/xpath.pxi":499
  *                 i += 1
@@ -212732,9 +212922,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 namespace = (<bytes>namespace).decode('utf8')
  *                 namespaces[prefix.decode('utf8')] = namespace
  */
-  __pyx_slice__102 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__102)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__102);
-  __Pyx_GIVEREF(__pyx_slice__102);
+  __pyx_slice__103 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__103)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__103);
+  __Pyx_GIVEREF(__pyx_slice__103);
 
   /* "src/lxml/xpath.pxi":505
  *                 # FIXME: this also replaces {namespaces} within strings!
@@ -212742,9 +212932,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         path = path_utf.decode('utf8')             # <<<<<<<<<<<<<<
  *         return path, namespaces
  */
-  __pyx_tuple__103 = PyTuple_Pack(1, __pyx_n_s_utf8); if (unlikely(!__pyx_tuple__103)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__103);
-  __Pyx_GIVEREF(__pyx_tuple__103);
+  __pyx_tuple__104 = PyTuple_Pack(1, __pyx_n_s_utf8); if (unlikely(!__pyx_tuple__104)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__104);
+  __Pyx_GIVEREF(__pyx_tuple__104);
 
   /* "src/lxml/xslt.pxi":398
  *         c_doc._private = <python.PyObject*>self._xslt_resolver_context
@@ -212753,9 +212943,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             c_style = xslt.xsltParseStylesheetDoc(c_doc)
  * 
  */
-  __pyx_tuple__105 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__105)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__105);
-  __Pyx_GIVEREF(__pyx_tuple__105);
+  __pyx_tuple__106 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__106)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__106);
+  __Pyx_GIVEREF(__pyx_tuple__106);
 
   /* "src/lxml/xslt.pxi":465
  *         """
@@ -212764,9 +212954,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         xslt.xsltMaxDepth = max_depth
  * 
  */
-  __pyx_tuple__106 = PyTuple_Pack(1, __pyx_kp_s_cannot_set_a_maximum_stylesheet); if (unlikely(!__pyx_tuple__106)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__106);
-  __Pyx_GIVEREF(__pyx_tuple__106);
+  __pyx_tuple__107 = PyTuple_Pack(1, __pyx_kp_s_cannot_set_a_maximum_stylesheet); if (unlikely(!__pyx_tuple__107)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__107);
+  __Pyx_GIVEREF(__pyx_tuple__107);
 
   /* "src/lxml/xslt.pxi":845
  *     global __findStylesheetByID
@@ -212775,9 +212965,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             u"//xsl:stylesheet[@xml:id = $id]",
  *             namespaces={u"xsl" : u"http://www.w3.org/1999/XSL/Transform"})
  */
-  __pyx_tuple__107 = PyTuple_Pack(1, __pyx_kp_u_xsl_stylesheet_xml_id_id); if (unlikely(!__pyx_tuple__107)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__107);
-  __Pyx_GIVEREF(__pyx_tuple__107);
+  __pyx_tuple__108 = PyTuple_Pack(1, __pyx_kp_u_xsl_stylesheet_xml_id_id); if (unlikely(!__pyx_tuple__108)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__108);
+  __Pyx_GIVEREF(__pyx_tuple__108);
 
   /* "src/lxml/xsltext.pxi":224
  *                 e = unicode(e).encode(u"UTF-8")
@@ -212786,9 +212976,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             message = python.PyBytes_FromFormat(
  *                 "Error executing extension element '%s': %s",
  */
-  __pyx_tuple__108 = PyTuple_Pack(1, __pyx_kp_u_UTF_8); if (unlikely(!__pyx_tuple__108)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__108);
-  __Pyx_GIVEREF(__pyx_tuple__108);
+  __pyx_tuple__109 = PyTuple_Pack(1, __pyx_kp_u_UTF_8); if (unlikely(!__pyx_tuple__109)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__109);
+  __Pyx_GIVEREF(__pyx_tuple__109);
 
   /* "src/lxml/dtd.pxi":281
  *             if _isString(file):
@@ -212797,9 +212987,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                     self._c_dtd = xmlparser.xmlParseDTD(NULL, _xcstr(file))
  *             elif hasattr(file, 'read'):
  */
-  __pyx_tuple__109 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__109)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__109);
-  __Pyx_GIVEREF(__pyx_tuple__109);
+  __pyx_tuple__110 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__110)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__110);
+  __Pyx_GIVEREF(__pyx_tuple__110);
 
   /* "src/lxml/dtd.pxi":288
  *                 raise DTDParseError, u"file must be a filename or file-like object"
@@ -212808,9 +212998,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 self._c_dtd = xmlparser.xmlParseDTD(<const_xmlChar*>external_id, NULL)
  *         else:
  */
-  __pyx_tuple__110 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__110)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__110);
-  __Pyx_GIVEREF(__pyx_tuple__110);
+  __pyx_tuple__111 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__111)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__111);
+  __Pyx_GIVEREF(__pyx_tuple__111);
 
   /* "src/lxml/dtd.pxi":364
  *         valid_ctxt = dtdvalid.xmlNewValidCtxt()
@@ -212819,9 +213009,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  *         # work around error reporting bug in libxml2 <= 2.9.1 (and later?)
  */
-  __pyx_tuple__111 = PyTuple_Pack(1, __pyx_kp_u_Failed_to_create_validation_cont); if (unlikely(!__pyx_tuple__111)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__111);
-  __Pyx_GIVEREF(__pyx_tuple__111);
+  __pyx_tuple__112 = PyTuple_Pack(1, __pyx_kp_u_Failed_to_create_validation_cont); if (unlikely(!__pyx_tuple__112)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__112);
+  __Pyx_GIVEREF(__pyx_tuple__112);
 
   /* "src/lxml/dtd.pxi":372
  * 
@@ -212830,9 +213020,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
  *                 ret = dtdvalid.xmlValidateDtd(valid_ctxt, c_doc, self._c_dtd)
  */
-  __pyx_tuple__112 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__112)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__112);
-  __Pyx_GIVEREF(__pyx_tuple__112);
+  __pyx_tuple__113 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__113)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__113);
+  __Pyx_GIVEREF(__pyx_tuple__113);
 
   /* "src/lxml/dtd.pxi":394
  *     error_log = _ErrorLog()
@@ -212841,9 +213031,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         c_dtd = dtd_parser._readDtd()
  * 
  */
-  __pyx_tuple__113 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__113)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__113);
-  __Pyx_GIVEREF(__pyx_tuple__113);
+  __pyx_tuple__114 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__114)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__114);
+  __Pyx_GIVEREF(__pyx_tuple__114);
 
   /* "src/lxml/relaxng.pxi":56
  *         elif file is not None:
@@ -212852,9 +213042,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                     if _rnc2rng is None:
  *                         raise RelaxNGParseError(
  */
-  __pyx_tuple__114 = PyTuple_Pack(1, __pyx_kp_s_rnc); if (unlikely(!__pyx_tuple__114)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__114);
-  __Pyx_GIVEREF(__pyx_tuple__114);
+  __pyx_tuple__115 = PyTuple_Pack(1, __pyx_kp_s_rnc); if (unlikely(!__pyx_tuple__115)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__115);
+  __Pyx_GIVEREF(__pyx_tuple__115);
 
   /* "src/lxml/relaxng.pxi":58
  *                 if file.lower().endswith('.rnc'):
@@ -212863,9 +213053,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                             'compact syntax not supported (please install rnc2rng)')
  *                     rng_data = _rnc2rng.dumps(_rnc2rng.load(file))
  */
-  __pyx_tuple__115 = PyTuple_Pack(1, __pyx_kp_s_compact_syntax_not_supported_ple); if (unlikely(!__pyx_tuple__115)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__115);
-  __Pyx_GIVEREF(__pyx_tuple__115);
+  __pyx_tuple__116 = PyTuple_Pack(1, __pyx_kp_s_compact_syntax_not_supported_ple); if (unlikely(!__pyx_tuple__116)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__116);
+  __Pyx_GIVEREF(__pyx_tuple__116);
 
   /* "src/lxml/relaxng.pxi":68
  *                     doc = None
@@ -212874,9 +213064,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                         parser_ctxt = relaxng.xmlRelaxNGNewParserCtxt(_cstr(filename))
  *             elif (_getFilenameForFile(file) or '').lower().endswith('.rnc'):
  */
-  __pyx_tuple__116 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__116)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__116);
-  __Pyx_GIVEREF(__pyx_tuple__116);
+  __pyx_tuple__117 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__117)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__117);
+  __Pyx_GIVEREF(__pyx_tuple__117);
 
   /* "src/lxml/relaxng.pxi":70
  *                     with self._error_log:
@@ -212885,9 +213075,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 rng_data = _rnc2rng.dumps(_rnc2rng.load(file))
  *                 doc = _parseMemoryDocument(rng_data, parser=None, url=None)
  */
-  __pyx_tuple__117 = PyTuple_Pack(1, __pyx_kp_s_rnc); if (unlikely(!__pyx_tuple__117)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__117);
-  __Pyx_GIVEREF(__pyx_tuple__117);
+  __pyx_tuple__118 = PyTuple_Pack(1, __pyx_kp_s_rnc); if (unlikely(!__pyx_tuple__118)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__118);
+  __Pyx_GIVEREF(__pyx_tuple__118);
 
   /* "src/lxml/schematron.pxi":98
  *                 filename = file
@@ -212896,9 +213086,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 parser_ctxt = schematron.xmlSchematronNewParserCtxt(_cstr(filename))
  *         else:
  */
-  __pyx_tuple__118 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__118)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__118);
-  __Pyx_GIVEREF(__pyx_tuple__118);
+  __pyx_tuple__119 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__119)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__119);
+  __Pyx_GIVEREF(__pyx_tuple__119);
 
   /* "src/lxml/schematron.pxi":110
  * 
@@ -212907,9 +213097,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 self._c_schema = schematron.xmlSchematronParse(parser_ctxt)
  *         finally:
  */
-  __pyx_tuple__119 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__119)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__119);
-  __Pyx_GIVEREF(__pyx_tuple__119);
+  __pyx_tuple__120 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__120)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__120);
+  __Pyx_GIVEREF(__pyx_tuple__120);
 
   /* "src/lxml/lxml.etree.pyx":111
  * 
@@ -212918,10 +213108,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         raise KeyError, key
  * 
  */
-  __pyx_tuple__120 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__120)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__120);
-  __Pyx_GIVEREF(__pyx_tuple__120);
-  __pyx_codeobj__121 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__120, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_getitem, 111, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__121)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__121 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__121)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__121);
+  __Pyx_GIVEREF(__pyx_tuple__121);
+  __pyx_codeobj__122 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__121, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_getitem, 111, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__122)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/lxml.etree.pyx":114
  *         raise KeyError, key
@@ -212930,10 +213120,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         raise KeyError, key
  * 
  */
-  __pyx_tuple__122 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__122)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__122);
-  __Pyx_GIVEREF(__pyx_tuple__122);
-  __pyx_codeobj__123 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__122, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_setitem, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__123)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__123 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__123)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__123);
+  __Pyx_GIVEREF(__pyx_tuple__123);
+  __pyx_codeobj__124 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__123, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_setitem, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__124)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/lxml.etree.pyx":117
  *         raise KeyError, key
@@ -212942,10 +213132,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         raise KeyError, key
  * 
  */
-  __pyx_tuple__124 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__124)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__124);
-  __Pyx_GIVEREF(__pyx_tuple__124);
-  __pyx_codeobj__125 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__124, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_delitem, 117, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__125)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__125 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__125)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__125);
+  __Pyx_GIVEREF(__pyx_tuple__125);
+  __pyx_codeobj__126 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__125, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_delitem, 117, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__126)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/lxml.etree.pyx":120
  *         raise KeyError, key
@@ -212954,10 +213144,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return False
  * 
  */
-  __pyx_tuple__126 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__126)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__126);
-  __Pyx_GIVEREF(__pyx_tuple__126);
-  __pyx_codeobj__127 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__126, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_contains, 120, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__127)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__127 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__127)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__127);
+  __Pyx_GIVEREF(__pyx_tuple__127);
+  __pyx_codeobj__128 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__127, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_contains, 120, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__128)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/lxml.etree.pyx":123
  *         return False
@@ -212966,10 +213156,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return 0
  * 
  */
-  __pyx_tuple__128 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__128)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__128);
-  __Pyx_GIVEREF(__pyx_tuple__128);
-  __pyx_codeobj__129 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__128, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_len, 123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__129)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__129 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__129)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__129);
+  __Pyx_GIVEREF(__pyx_tuple__129);
+  __pyx_codeobj__130 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__129, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_len, 123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__130)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/lxml.etree.pyx":126
  *         return 0
@@ -212978,10 +213168,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return ITER_EMPTY
  *     iterkeys = itervalues = iteritems = __iter__
  */
-  __pyx_tuple__130 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__130)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__130);
-  __Pyx_GIVEREF(__pyx_tuple__130);
-  __pyx_codeobj__131 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__130, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_iter_2, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__131)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__131 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__131)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__131);
+  __Pyx_GIVEREF(__pyx_tuple__131);
+  __pyx_codeobj__132 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__131, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_iter_2, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__132)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/lxml.etree.pyx":169
  * 
@@ -212990,9 +213180,9 @@ static int __Pyx_InitCachedConstants(void) {
  * cdef char* _C_FILENAME_ENCODING = _cstr(_FILENAME_ENCODING)
  * 
  */
-  __pyx_tuple__132 = PyTuple_Pack(1, __pyx_kp_s_UTF_8); if (unlikely(!__pyx_tuple__132)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__132);
-  __Pyx_GIVEREF(__pyx_tuple__132);
+  __pyx_tuple__133 = PyTuple_Pack(1, __pyx_kp_s_UTF_8); if (unlikely(!__pyx_tuple__133)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__133);
+  __Pyx_GIVEREF(__pyx_tuple__133);
 
   /* "src/lxml/lxml.etree.pyx":188
  * }
@@ -213001,9 +213191,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * def register_namespace(prefix, uri):
  */
-  __pyx_tuple__133 = PyTuple_Pack(1, __pyx_kp_b_ns_d_2); if (unlikely(!__pyx_tuple__133)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__133);
-  __Pyx_GIVEREF(__pyx_tuple__133);
+  __pyx_tuple__134 = PyTuple_Pack(1, __pyx_kp_b_ns_d_2); if (unlikely(!__pyx_tuple__134)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__134);
+  __Pyx_GIVEREF(__pyx_tuple__134);
 
   /* "src/lxml/lxml.etree.pyx":190
  * cdef object _check_internal_prefix = re.compile(b"ns\d+$").match
@@ -213012,10 +213202,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""Registers a namespace prefix that newly created Elements in that
  *     namespace will use.  The registry is global, and any existing
  */
-  __pyx_tuple__134 = PyTuple_Pack(6, __pyx_n_s_prefix, __pyx_n_s_uri, __pyx_n_s_prefix_utf, __pyx_n_s_uri_utf, __pyx_n_s_k, __pyx_n_s_v); if (unlikely(!__pyx_tuple__134)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__134);
-  __Pyx_GIVEREF(__pyx_tuple__134);
-  __pyx_codeobj__135 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__134, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_register_namespace, 190, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__135)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__135 = PyTuple_Pack(6, __pyx_n_s_prefix, __pyx_n_s_uri, __pyx_n_s_prefix_utf, __pyx_n_s_uri_utf, __pyx_n_s_k, __pyx_n_s_v); if (unlikely(!__pyx_tuple__135)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__135);
+  __Pyx_GIVEREF(__pyx_tuple__135);
+  __pyx_codeobj__136 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__135, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_register_namespace, 190, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__136)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/lxml.etree.pyx":216
  *     this one.
@@ -213024,13 +213214,13 @@ static int __Pyx_InitCachedConstants(void) {
  *         super(_Error, self).__init__(message)
  *         if error_log is None:
  */
-  __pyx_tuple__136 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_message, __pyx_n_s_error_log); if (unlikely(!__pyx_tuple__136)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__136);
-  __Pyx_GIVEREF(__pyx_tuple__136);
-  __pyx_codeobj__137 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__136, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_init, 216, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__137)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__138 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__138)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__138);
-  __Pyx_GIVEREF(__pyx_tuple__138);
+  __pyx_tuple__137 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_message, __pyx_n_s_error_log); if (unlikely(!__pyx_tuple__137)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__137);
+  __Pyx_GIVEREF(__pyx_tuple__137);
+  __pyx_codeobj__138 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_init, 216, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__138)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__139 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__139)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__139);
+  __Pyx_GIVEREF(__pyx_tuple__139);
 
   /* "src/lxml/lxml.etree.pyx":271
  * try:
@@ -213039,9 +213229,9 @@ static int __Pyx_InitCachedConstants(void) {
  * except Exception:
  *     print u"Unknown libxml2 version: %s" % (<unsigned char*>tree.xmlParserVersion).decode("latin1")
  */
-  __pyx_tuple__139 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__139)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__139);
-  __Pyx_GIVEREF(__pyx_tuple__139);
+  __pyx_tuple__140 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__140)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__140);
+  __Pyx_GIVEREF(__pyx_tuple__140);
 
   /* "src/lxml/xmlerror.pxi":8
  * # module level API functions
@@ -213050,74 +213240,74 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""clear_error_log()
  * 
  */
-  __pyx_codeobj__140 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_2, __pyx_n_s_clear_error_log_2, 8, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__140)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__141 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_2, __pyx_n_s_clear_error_log_2, 8, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__141)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/xmlerror.pxi":545
+  /* "src/lxml/xmlerror.pxi":555
  * 
  * cdef _BaseErrorLog __GLOBAL_ERROR_LOG
  * __GLOBAL_ERROR_LOG = _RotatingErrorLog(__MAX_LOG_SIZE)             # <<<<<<<<<<<<<<
  * 
  * cdef _BaseErrorLog _getGlobalErrorLog():
  */
-  __pyx_tuple__141 = PyTuple_Pack(1, __pyx_int_100); if (unlikely(!__pyx_tuple__141)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__141);
-  __Pyx_GIVEREF(__pyx_tuple__141);
+  __pyx_tuple__142 = PyTuple_Pack(1, __pyx_int_100); if (unlikely(!__pyx_tuple__142)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__142);
+  __Pyx_GIVEREF(__pyx_tuple__142);
 
-  /* "src/lxml/xmlerror.pxi":574
+  /* "src/lxml/xmlerror.pxi":584
  *     return _getGlobalErrorLog().copy()
  * 
  * def use_global_python_log(PyErrorLog log not None):             # <<<<<<<<<<<<<<
  *     u"""use_global_python_log(log)
  * 
  */
-  __pyx_tuple__142 = PyTuple_Pack(1, __pyx_n_s_log); if (unlikely(!__pyx_tuple__142)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__142);
-  __Pyx_GIVEREF(__pyx_tuple__142);
-  __pyx_codeobj__143 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__142, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_2, __pyx_n_s_use_global_python_log, 574, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__143)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__143 = PyTuple_Pack(1, __pyx_n_s_log); if (unlikely(!__pyx_tuple__143)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__143);
+  __Pyx_GIVEREF(__pyx_tuple__143);
+  __pyx_codeobj__144 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__143, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_2, __pyx_n_s_use_global_python_log, 584, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__144)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/xmlerror.pxi":739
+  /* "src/lxml/xmlerror.pxi":749
  * # cannot handle strings that are a few thousand bytes in length.
  * 
  * cdef object __ERROR_LEVELS = (u"""\             # <<<<<<<<<<<<<<
  * NONE=0
  * WARNING=1
  */
-  __pyx_tuple__144 = PyTuple_Pack(1, __pyx_kp_u_NONE_0_WARNING_1_ERROR_2_FATAL_3); if (unlikely(!__pyx_tuple__144)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__144);
-  __Pyx_GIVEREF(__pyx_tuple__144);
+  __pyx_tuple__145 = PyTuple_Pack(1, __pyx_kp_u_NONE_0_WARNING_1_ERROR_2_FATAL_3); if (unlikely(!__pyx_tuple__145)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__145);
+  __Pyx_GIVEREF(__pyx_tuple__145);
 
-  /* "src/lxml/xmlerror.pxi":746
+  /* "src/lxml/xmlerror.pxi":756
  * """,)
  * 
  * cdef object __ERROR_DOMAINS = (u"""\             # <<<<<<<<<<<<<<
  * NONE=0
  * PARSER=1
  */
-  __pyx_tuple__145 = PyTuple_Pack(1, __pyx_kp_u_NONE_0_PARSER_1_TREE_2_NAMESPACE); if (unlikely(!__pyx_tuple__145)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__145);
-  __Pyx_GIVEREF(__pyx_tuple__145);
+  __pyx_tuple__146 = PyTuple_Pack(1, __pyx_kp_u_NONE_0_PARSER_1_TREE_2_NAMESPACE); if (unlikely(!__pyx_tuple__146)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__146);
+  __Pyx_GIVEREF(__pyx_tuple__146);
 
-  /* "src/lxml/xmlerror.pxi":780
+  /* "src/lxml/xmlerror.pxi":790
  * """,)
  * 
  * cdef object __PARSER_ERROR_TYPES = (u"""\             # <<<<<<<<<<<<<<
  * ERR_OK=0
  * ERR_INTERNAL_ERROR=1
  */
-  __pyx_tuple__146 = PyTuple_Pack(11, __pyx_kp_u_ERR_OK_0_ERR_INTERNAL_ERROR_1_ER, __pyx_kp_u_ERR_ENCODING_NAME_79_ERR_HYPHEN, __pyx_kp_u_RNGP_ATTRIBUTE_CONTENT_1003_RNGP, __pyx_kp_u_RNGP_PAT_DATA_EXCEPT_ONEMORE_107, __pyx_kp_u_TREE_NOT_UTF8_1303_SAVE_NOT_UTF8, __pyx_kp_u_SCHEMAP_EXTENSION_NO_BASE_1707_S, __pyx_kp_u_SCHEMAP_DEF_AND_PREFIX_1768_SCHE, __pyx_kp_u_SCHEMAV_CVC_MINLENGTH_VALID_1831, __pyx_kp_u_SCHEMAP_SRC_RESOLVE_3004_SCHEMAP, __pyx_kp_u_SCHEMAP_CVC_SIMPLE_TYPE_3062_SCH, __pyx_kp_u_I18N_NO_OUTPUT_6004_BUF_OVERFLOW); if (unlikely(!__pyx_tuple__146)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__146);
-  __Pyx_GIVEREF(__pyx_tuple__146);
+  __pyx_tuple__147 = PyTuple_Pack(11, __pyx_kp_u_ERR_OK_0_ERR_INTERNAL_ERROR_1_ER, __pyx_kp_u_ERR_ENCODING_NAME_79_ERR_HYPHEN, __pyx_kp_u_RNGP_ATTRIBUTE_CONTENT_1003_RNGP, __pyx_kp_u_RNGP_PAT_DATA_EXCEPT_ONEMORE_107, __pyx_kp_u_TREE_NOT_UTF8_1303_SAVE_NOT_UTF8, __pyx_kp_u_SCHEMAP_EXTENSION_NO_BASE_1707_S, __pyx_kp_u_SCHEMAP_DEF_AND_PREFIX_1768_SCHE, __pyx_kp_u_SCHEMAV_CVC_MINLENGTH_VALID_1831, __pyx_kp_u_SCHEMAP_SRC_RESOLVE_3004_SCHEMAP, __pyx_kp_u_SCHEMAP_CVC_SIMPLE_TYPE_3062_SCH, __pyx_kp_u_I18N_NO_OUTPUT_6004_BUF_OVERFLOW); if (unlikely(!__pyx_tuple__147)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__147);
+  __Pyx_GIVEREF(__pyx_tuple__147);
 
-  /* "src/lxml/xmlerror.pxi":1537
+  /* "src/lxml/xmlerror.pxi":1547
  * """,)
  * 
  * cdef object __RELAXNG_ERROR_TYPES = (u"""\             # <<<<<<<<<<<<<<
  * RELAXNG_OK=0
  * RELAXNG_ERR_MEMORY=1
  */
-  __pyx_tuple__147 = PyTuple_Pack(1, __pyx_kp_u_RELAXNG_OK_0_RELAXNG_ERR_MEMORY); if (unlikely(!__pyx_tuple__147)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__147);
-  __Pyx_GIVEREF(__pyx_tuple__147);
+  __pyx_tuple__148 = PyTuple_Pack(1, __pyx_kp_u_RELAXNG_OK_0_RELAXNG_ERR_MEMORY); if (unlikely(!__pyx_tuple__148)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__148);
+  __Pyx_GIVEREF(__pyx_tuple__148);
 
   /* "src/lxml/lxml.etree.pyx":514
  * 
@@ -213126,9 +213316,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     ur"[^\x20\x0D\x0Aa-zA-Z0-9'()+,./:=?;!*#@$_%-]+").search
  * 
  */
-  __pyx_tuple__148 = PyTuple_Pack(1, __pyx_kp_u_x20_x0D_x0Aa_zA_Z0_9); if (unlikely(!__pyx_tuple__148)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__148);
-  __Pyx_GIVEREF(__pyx_tuple__148);
+  __pyx_tuple__149 = PyTuple_Pack(1, __pyx_kp_u_x20_x0D_x0Aa_zA_Z0_9); if (unlikely(!__pyx_tuple__149)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__149);
+  __Pyx_GIVEREF(__pyx_tuple__149);
 
   /* "src/lxml/lxml.etree.pyx":2988
  * # module-level API for ElementTree
@@ -213137,13 +213327,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""Element(_tag, attrib=None, nsmap=None, **_extra)
  * 
  */
-  __pyx_tuple__149 = PyTuple_Pack(4, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__149)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__149);
-  __Pyx_GIVEREF(__pyx_tuple__149);
-  __pyx_codeobj__150 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__149, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_Element, 2988, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__150)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__151 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__151)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__151);
-  __Pyx_GIVEREF(__pyx_tuple__151);
+  __pyx_tuple__150 = PyTuple_Pack(4, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__150)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__150);
+  __Pyx_GIVEREF(__pyx_tuple__150);
+  __pyx_codeobj__151 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__150, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_Element, 2988, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__151)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__152 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__152)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__152);
+  __Pyx_GIVEREF(__pyx_tuple__152);
 
   /* "src/lxml/lxml.etree.pyx":3002
  * 
@@ -213152,13 +213342,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""Comment(text=None)
  * 
  */
-  __pyx_tuple__152 = PyTuple_Pack(4, __pyx_n_s_text, __pyx_n_s_doc_2, __pyx_n_s_c_node, __pyx_n_s_c_doc); if (unlikely(!__pyx_tuple__152)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__152);
-  __Pyx_GIVEREF(__pyx_tuple__152);
-  __pyx_codeobj__153 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__152, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_Comment, 3002, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__153)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__154 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__154)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__154);
-  __Pyx_GIVEREF(__pyx_tuple__154);
+  __pyx_tuple__153 = PyTuple_Pack(4, __pyx_n_s_text, __pyx_n_s_doc_2, __pyx_n_s_c_node, __pyx_n_s_c_doc); if (unlikely(!__pyx_tuple__153)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__153);
+  __Pyx_GIVEREF(__pyx_tuple__153);
+  __pyx_codeobj__154 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__153, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_Comment, 3002, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__154)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__155 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__155)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__155);
+  __Pyx_GIVEREF(__pyx_tuple__155);
 
   /* "src/lxml/lxml.etree.pyx":3026
  * 
@@ -213167,13 +213357,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""ProcessingInstruction(target, text=None)
  * 
  */
-  __pyx_tuple__155 = PyTuple_Pack(5, __pyx_n_s_target, __pyx_n_s_text, __pyx_n_s_doc_2, __pyx_n_s_c_node, __pyx_n_s_c_doc); if (unlikely(!__pyx_tuple__155)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__155);
-  __Pyx_GIVEREF(__pyx_tuple__155);
-  __pyx_codeobj__156 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__155, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_ProcessingInstruction, 3026, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__156)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__157 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__157)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__157);
-  __Pyx_GIVEREF(__pyx_tuple__157);
+  __pyx_tuple__156 = PyTuple_Pack(5, __pyx_n_s_target, __pyx_n_s_text, __pyx_n_s_doc_2, __pyx_n_s_c_node, __pyx_n_s_c_doc); if (unlikely(!__pyx_tuple__156)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__156);
+  __Pyx_GIVEREF(__pyx_tuple__156);
+  __pyx_codeobj__157 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__156, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_ProcessingInstruction, 3026, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__157)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__158 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__158)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__158);
+  __Pyx_GIVEREF(__pyx_tuple__158);
 
   /* "src/lxml/lxml.etree.pyx":3079
  * 
@@ -213182,10 +213372,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""Entity(name)
  * 
  */
-  __pyx_tuple__158 = PyTuple_Pack(6, __pyx_n_s_name_2, __pyx_n_s_doc_2, __pyx_n_s_c_node, __pyx_n_s_c_doc, __pyx_n_s_name_utf, __pyx_n_s_c_name); if (unlikely(!__pyx_tuple__158)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__158);
-  __Pyx_GIVEREF(__pyx_tuple__158);
-  __pyx_codeobj__159 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__158, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_Entity, 3079, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__159)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__159 = PyTuple_Pack(6, __pyx_n_s_name_2, __pyx_n_s_doc_2, __pyx_n_s_c_node, __pyx_n_s_c_doc, __pyx_n_s_name_utf, __pyx_n_s_c_name); if (unlikely(!__pyx_tuple__159)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__159);
+  __Pyx_GIVEREF(__pyx_tuple__159);
+  __pyx_codeobj__160 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__159, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_Entity, 3079, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__160)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/lxml.etree.pyx":3105
  * 
@@ -213194,13 +213384,13 @@ static int __Pyx_InitCachedConstants(void) {
  *                attrib=None, nsmap=None, **_extra):
  *     u"""SubElement(_parent, _tag, attrib=None, nsmap=None, **_extra)
  */
-  __pyx_tuple__160 = PyTuple_Pack(5, __pyx_n_s_parent, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__160)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__160);
-  __Pyx_GIVEREF(__pyx_tuple__160);
-  __pyx_codeobj__161 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__160, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_SubElement, 3105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__161)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__162 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__162)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__162);
-  __Pyx_GIVEREF(__pyx_tuple__162);
+  __pyx_tuple__161 = PyTuple_Pack(5, __pyx_n_s_parent, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__161)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__161);
+  __Pyx_GIVEREF(__pyx_tuple__161);
+  __pyx_codeobj__162 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__161, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_SubElement, 3105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__162)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__163 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__163)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__163);
+  __Pyx_GIVEREF(__pyx_tuple__163);
 
   /* "src/lxml/lxml.etree.pyx":3115
  * 
@@ -213209,13 +213399,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""ElementTree(element=None, file=None, parser=None)
  * 
  */
-  __pyx_tuple__163 = PyTuple_Pack(10, __pyx_n_s_element, __pyx_n_s_file, __pyx_n_s_parser, __pyx_n_s_c_next, __pyx_n_s_c_node, __pyx_n_s_c_node_copy, __pyx_n_s_c_doc, __pyx_n_s_etree, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__163)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__163);
-  __Pyx_GIVEREF(__pyx_tuple__163);
-  __pyx_codeobj__164 = (PyObject*)__Pyx_PyCode_New(1, 2, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__163, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_ElementTree, 3115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__164)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__165 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__165)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__165);
-  __Pyx_GIVEREF(__pyx_tuple__165);
+  __pyx_tuple__164 = PyTuple_Pack(10, __pyx_n_s_element, __pyx_n_s_file, __pyx_n_s_parser, __pyx_n_s_c_next, __pyx_n_s_c_node, __pyx_n_s_c_node_copy, __pyx_n_s_c_doc, __pyx_n_s_etree, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__164)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__164);
+  __Pyx_GIVEREF(__pyx_tuple__164);
+  __pyx_codeobj__165 = (PyObject*)__Pyx_PyCode_New(1, 2, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__164, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_ElementTree, 3115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__165)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__166 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__166)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__166);
+  __Pyx_GIVEREF(__pyx_tuple__166);
 
   /* "src/lxml/lxml.etree.pyx":3141
  * 
@@ -213224,13 +213414,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""HTML(text, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__166 = PyTuple_Pack(5, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__166)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__166);
-  __Pyx_GIVEREF(__pyx_tuple__166);
-  __pyx_codeobj__167 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__166, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_HTML, 3141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__167)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__168 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__168)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__168);
-  __Pyx_GIVEREF(__pyx_tuple__168);
+  __pyx_tuple__167 = PyTuple_Pack(5, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__167)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__167);
+  __Pyx_GIVEREF(__pyx_tuple__167);
+  __pyx_codeobj__168 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__167, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_HTML, 3141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__168)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__169 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__169)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__169);
+  __Pyx_GIVEREF(__pyx_tuple__169);
 
   /* "src/lxml/lxml.etree.pyx":3167
  * 
@@ -213239,13 +213429,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""XML(text, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__169 = PyTuple_Pack(5, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__169)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__169);
-  __Pyx_GIVEREF(__pyx_tuple__169);
-  __pyx_codeobj__170 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__169, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_XML, 3167, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__170)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__171 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__171)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__171);
-  __Pyx_GIVEREF(__pyx_tuple__171);
+  __pyx_tuple__170 = PyTuple_Pack(5, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__170)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__170);
+  __Pyx_GIVEREF(__pyx_tuple__170);
+  __pyx_codeobj__171 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__170, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_XML, 3167, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__171)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__172 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__172)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__172);
+  __Pyx_GIVEREF(__pyx_tuple__172);
 
   /* "src/lxml/lxml.etree.pyx":3198
  * 
@@ -213254,13 +213444,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""fromstring(text, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__172 = PyTuple_Pack(5, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__172)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__172);
-  __Pyx_GIVEREF(__pyx_tuple__172);
-  __pyx_codeobj__173 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__172, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_fromstring, 3198, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__173)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__174 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__174)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__174);
-  __Pyx_GIVEREF(__pyx_tuple__174);
+  __pyx_tuple__173 = PyTuple_Pack(5, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__173)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__173);
+  __Pyx_GIVEREF(__pyx_tuple__173);
+  __pyx_codeobj__174 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__173, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_fromstring, 3198, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__174)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__175 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__175)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__175);
+  __Pyx_GIVEREF(__pyx_tuple__175);
 
   /* "src/lxml/lxml.etree.pyx":3219
  * 
@@ -213269,13 +213459,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""fromstringlist(strings, parser=None)
  * 
  */
-  __pyx_tuple__175 = PyTuple_Pack(5, __pyx_n_s_strings, __pyx_n_s_parser, __pyx_n_s_doc_2, __pyx_n_s_feed, __pyx_n_s_data); if (unlikely(!__pyx_tuple__175)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__175);
-  __Pyx_GIVEREF(__pyx_tuple__175);
-  __pyx_codeobj__176 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__175, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_fromstringlist, 3219, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__176)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__177 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__177)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__177);
-  __Pyx_GIVEREF(__pyx_tuple__177);
+  __pyx_tuple__176 = PyTuple_Pack(5, __pyx_n_s_strings, __pyx_n_s_parser, __pyx_n_s_doc_2, __pyx_n_s_feed, __pyx_n_s_data); if (unlikely(!__pyx_tuple__176)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__176);
+  __Pyx_GIVEREF(__pyx_tuple__176);
+  __pyx_codeobj__177 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__176, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_fromstringlist, 3219, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__177)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__178 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__178)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__178);
+  __Pyx_GIVEREF(__pyx_tuple__178);
 
   /* "src/lxml/lxml.etree.pyx":3240
  * 
@@ -213284,10 +213474,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""iselement(element)
  * 
  */
-  __pyx_tuple__178 = PyTuple_Pack(1, __pyx_n_s_element); if (unlikely(!__pyx_tuple__178)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__178);
-  __Pyx_GIVEREF(__pyx_tuple__178);
-  __pyx_codeobj__179 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__178, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_iselement, 3240, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__179)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__179 = PyTuple_Pack(1, __pyx_n_s_element); if (unlikely(!__pyx_tuple__179)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__179);
+  __Pyx_GIVEREF(__pyx_tuple__179);
+  __pyx_codeobj__180 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_iselement, 3240, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__180)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/lxml.etree.pyx":3248
  * 
@@ -213296,10 +213486,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""dump(elem, pretty_print=True, with_tail=True)
  * 
  */
-  __pyx_tuple__180 = PyTuple_Pack(4, __pyx_n_s_elem, __pyx_n_s_pretty_print, __pyx_n_s_with_tail, __pyx_n_s_xml); if (unlikely(!__pyx_tuple__180)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__180);
-  __Pyx_GIVEREF(__pyx_tuple__180);
-  __pyx_codeobj__181 = (PyObject*)__Pyx_PyCode_New(1, 2, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__180, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_dump, 3248, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__181)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__181 = PyTuple_Pack(4, __pyx_n_s_elem, __pyx_n_s_pretty_print, __pyx_n_s_with_tail, __pyx_n_s_xml); if (unlikely(!__pyx_tuple__181)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__181);
+  __Pyx_GIVEREF(__pyx_tuple__181);
+  __pyx_codeobj__182 = (PyObject*)__Pyx_PyCode_New(1, 2, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__181, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_dump, 3248, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__182)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/lxml.etree.pyx":3261
  * 
@@ -213308,10 +213498,10 @@ static int __Pyx_InitCachedConstants(void) {
  *              xml_declaration=None, bint pretty_print=False, bint with_tail=True,
  *              standalone=None, doctype=None,
  */
-  __pyx_tuple__182 = PyTuple_Pack(13, __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_inclusive_ns_prefixes, __pyx_n_s_write_declaration, __pyx_n_s_is_standalone); if (unlikely(!__pyx_tuple__182)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__182);
-  __Pyx_GIVEREF(__pyx_tuple__182);
-  __pyx_codeobj__183 = (PyObject*)__Pyx_PyCode_New(1, 10, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_tostring, 3261, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__183)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__183 = PyTuple_Pack(13, __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_inclusive_ns_prefixes, __pyx_n_s_write_declaration, __pyx_n_s_is_standalone); if (unlikely(!__pyx_tuple__183)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__183);
+  __Pyx_GIVEREF(__pyx_tuple__183);
+  __pyx_codeobj__184 = (PyObject*)__Pyx_PyCode_New(1, 10, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__183, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_tostring, 3261, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__184)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/lxml.etree.pyx":3354
  * 
@@ -213320,10 +213510,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""tostringlist(element_or_tree, *args, **kwargs)
  * 
  */
-  __pyx_tuple__184 = PyTuple_Pack(3, __pyx_n_s_element_or_tree, __pyx_n_s_args, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__184)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__184);
-  __Pyx_GIVEREF(__pyx_tuple__184);
-  __pyx_codeobj__185 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__184, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_tostringlist, 3354, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__185)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__185 = PyTuple_Pack(3, __pyx_n_s_element_or_tree, __pyx_n_s_args, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__185)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__185);
+  __Pyx_GIVEREF(__pyx_tuple__185);
+  __pyx_codeobj__186 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__185, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_tostringlist, 3354, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__186)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/lxml.etree.pyx":3366
  * 
@@ -213332,10 +213522,10 @@ static int __Pyx_InitCachedConstants(void) {
  *               bint with_tail=True, doctype=None):
  *     u"""tounicode(element_or_tree, method="xml", pretty_print=False,
  */
-  __pyx_tuple__186 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_method, __pyx_n_s_pretty_print, __pyx_n_s_with_tail, __pyx_n_s_doctype); if (unlikely(!__pyx_tuple__186)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__186);
-  __Pyx_GIVEREF(__pyx_tuple__186);
-  __pyx_codeobj__187 = (PyObject*)__Pyx_PyCode_New(1, 4, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__186, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_tounicode, 3366, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__187)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__187 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_method, __pyx_n_s_pretty_print, __pyx_n_s_with_tail, __pyx_n_s_doctype); if (unlikely(!__pyx_tuple__187)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__187);
+  __Pyx_GIVEREF(__pyx_tuple__187);
+  __pyx_codeobj__188 = (PyObject*)__Pyx_PyCode_New(1, 4, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__187, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_tounicode, 3366, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__188)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/lxml.etree.pyx":3401
  * 
@@ -213344,13 +213534,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""parse(source, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__188 = PyTuple_Pack(5, __pyx_n_s_source, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__188)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__188);
-  __Pyx_GIVEREF(__pyx_tuple__188);
-  __pyx_codeobj__189 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__188, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_parse, 3401, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__189)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__190 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__190)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__190);
-  __Pyx_GIVEREF(__pyx_tuple__190);
+  __pyx_tuple__189 = PyTuple_Pack(5, __pyx_n_s_source, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__189)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__189);
+  __Pyx_GIVEREF(__pyx_tuple__189);
+  __pyx_codeobj__190 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__189, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_parse, 3401, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__190)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__191 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__191)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__191);
+  __Pyx_GIVEREF(__pyx_tuple__191);
 
   /* "src/lxml/classlookup.pxi":551
  *     LOOKUP_ELEMENT_CLASS = function
@@ -213359,13 +213549,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""set_element_class_lookup(lookup = None)
  * 
  */
-  __pyx_tuple__191 = PyTuple_Pack(1, __pyx_n_s_lookup); if (unlikely(!__pyx_tuple__191)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__191);
-  __Pyx_GIVEREF(__pyx_tuple__191);
-  __pyx_codeobj__192 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__191, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_3, __pyx_n_s_set_element_class_lookup, 551, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__192)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__193 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__193)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__193);
-  __Pyx_GIVEREF(__pyx_tuple__193);
+  __pyx_tuple__192 = PyTuple_Pack(1, __pyx_n_s_lookup); if (unlikely(!__pyx_tuple__192)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__192);
+  __Pyx_GIVEREF(__pyx_tuple__192);
+  __pyx_codeobj__193 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__192, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_3, __pyx_n_s_set_element_class_lookup, 551, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__193)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__194 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__194)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__194);
+  __Pyx_GIVEREF(__pyx_tuple__194);
 
   /* "src/lxml/nsclasses.pxi":175
  * __FUNCTION_NAMESPACE_REGISTRIES = {}
@@ -213374,10 +213564,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""FunctionNamespace(ns_uri)
  * 
  */
-  __pyx_tuple__194 = PyTuple_Pack(3, __pyx_n_s_ns_uri, __pyx_n_s_ns_utf, __pyx_n_s_registry); if (unlikely(!__pyx_tuple__194)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__194);
-  __Pyx_GIVEREF(__pyx_tuple__194);
-  __pyx_codeobj__195 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_4, __pyx_n_s_FunctionNamespace, 175, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__195)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__195 = PyTuple_Pack(3, __pyx_n_s_ns_uri, __pyx_n_s_ns_utf, __pyx_n_s_registry); if (unlikely(!__pyx_tuple__195)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__195);
+  __Pyx_GIVEREF(__pyx_tuple__195);
+  __pyx_codeobj__196 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__195, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_4, __pyx_n_s_FunctionNamespace, 175, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__196)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/parser.pxi":18
  *     For compatibility with ElementTree 1.3 and later.
@@ -213386,34 +213576,34 @@ static int __Pyx_InitCachedConstants(void) {
  *         super(_ParseError, self).__init__(message)
  *         self.position = (line, column)
  */
-  __pyx_tuple__196 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_message, __pyx_n_s_code, __pyx_n_s_line, __pyx_n_s_column); if (unlikely(!__pyx_tuple__196)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__196);
-  __Pyx_GIVEREF(__pyx_tuple__196);
-  __pyx_codeobj__197 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__196, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_5, __pyx_n_s_init, 18, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__197)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__197 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_message, __pyx_n_s_code, __pyx_n_s_line, __pyx_n_s_column); if (unlikely(!__pyx_tuple__197)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__197);
+  __Pyx_GIVEREF(__pyx_tuple__197);
+  __pyx_codeobj__198 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__197, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_5, __pyx_n_s_init, 18, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__198)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1553
+  /* "src/lxml/parser.pxi":1564
  * __GLOBAL_PARSER_CONTEXT.setDefaultParser(__DEFAULT_XML_PARSER)
  * 
  * def set_default_parser(_BaseParser parser=None):             # <<<<<<<<<<<<<<
  *     u"""set_default_parser(parser=None)
  * 
  */
-  __pyx_tuple__198 = PyTuple_Pack(1, __pyx_n_s_parser); if (unlikely(!__pyx_tuple__198)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__198);
-  __Pyx_GIVEREF(__pyx_tuple__198);
-  __pyx_codeobj__199 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__198, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_5, __pyx_n_s_set_default_parser, 1553, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__199)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__200 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__200)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__200);
-  __Pyx_GIVEREF(__pyx_tuple__200);
+  __pyx_tuple__199 = PyTuple_Pack(1, __pyx_n_s_parser); if (unlikely(!__pyx_tuple__199)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__199);
+  __Pyx_GIVEREF(__pyx_tuple__199);
+  __pyx_codeobj__200 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__199, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_5, __pyx_n_s_set_default_parser, 1564, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__200)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__201 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__201)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__201);
+  __Pyx_GIVEREF(__pyx_tuple__201);
 
-  /* "src/lxml/parser.pxi":1569
+  /* "src/lxml/parser.pxi":1580
  *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)
  * 
  * def get_default_parser():             # <<<<<<<<<<<<<<
  *     u"get_default_parser()"
  *     return __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  */
-  __pyx_codeobj__201 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_5, __pyx_n_s_get_default_parser, 1569, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__201)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__202 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_5, __pyx_n_s_get_default_parser, 1580, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__202)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/saxparser.pxi":469
  * 
@@ -213422,9 +213612,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * 
  */
-  __pyx_tuple__202 = PyTuple_Pack(2, __pyx_kp_s_end_ns, Py_None); if (unlikely(!__pyx_tuple__202)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__202);
-  __Pyx_GIVEREF(__pyx_tuple__202);
+  __pyx_tuple__203 = PyTuple_Pack(2, __pyx_kp_s_end_ns, Py_None); if (unlikely(!__pyx_tuple__203)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__203);
+  __Pyx_GIVEREF(__pyx_tuple__203);
 
   /* "src/lxml/parsertarget.pxi":14
  *     # to push the Python level parser result through the parser
@@ -213433,10 +213623,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self.result = result
  * 
  */
-  __pyx_tuple__203 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_result); if (unlikely(!__pyx_tuple__203)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__203);
-  __Pyx_GIVEREF(__pyx_tuple__203);
-  __pyx_codeobj__204 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__203, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_6, __pyx_n_s_init, 14, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__204)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__204 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_result); if (unlikely(!__pyx_tuple__204)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__204);
+  __Pyx_GIVEREF(__pyx_tuple__204);
+  __pyx_codeobj__205 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__204, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_6, __pyx_n_s_init, 14, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__205)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/xmlid.pxi":3
  * cdef object _find_id_attributes
@@ -213445,13 +213635,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""XMLID(text, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__205 = PyTuple_Pack(6, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_dic, __pyx_n_s_root, __pyx_n_s_elem); if (unlikely(!__pyx_tuple__205)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__205);
-  __Pyx_GIVEREF(__pyx_tuple__205);
-  __pyx_codeobj__206 = (PyObject*)__Pyx_PyCode_New(2, 1, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__205, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_7, __pyx_n_s_XMLID, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__206)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__207 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__207)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__207);
-  __Pyx_GIVEREF(__pyx_tuple__207);
+  __pyx_tuple__206 = PyTuple_Pack(6, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_dic, __pyx_n_s_root, __pyx_n_s_elem); if (unlikely(!__pyx_tuple__206)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__206);
+  __Pyx_GIVEREF(__pyx_tuple__206);
+  __pyx_codeobj__207 = (PyObject*)__Pyx_PyCode_New(2, 1, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__206, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_7, __pyx_n_s_XMLID, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__207)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__208 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__208)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__208);
+  __Pyx_GIVEREF(__pyx_tuple__208);
 
   /* "src/lxml/xmlid.pxi":24
  *     return (root, dic)
@@ -213460,13 +213650,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""XMLDTDID(text, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__208 = PyTuple_Pack(4, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_root); if (unlikely(!__pyx_tuple__208)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__208);
-  __Pyx_GIVEREF(__pyx_tuple__208);
-  __pyx_codeobj__209 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__208, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_7, __pyx_n_s_XMLDTDID, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__209)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__210 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__210)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__210);
-  __Pyx_GIVEREF(__pyx_tuple__210);
+  __pyx_tuple__209 = PyTuple_Pack(4, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_root); if (unlikely(!__pyx_tuple__209)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__209);
+  __Pyx_GIVEREF(__pyx_tuple__209);
+  __pyx_codeobj__210 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_7, __pyx_n_s_XMLDTDID, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__210)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__211 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__211)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__211);
+  __Pyx_GIVEREF(__pyx_tuple__211);
 
   /* "src/lxml/xmlid.pxi":44
  *         return (root, _IDDict(root))
@@ -213475,13 +213665,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""parseid(source, parser=None)
  * 
  */
-  __pyx_tuple__211 = PyTuple_Pack(4, __pyx_n_s_source, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2); if (unlikely(!__pyx_tuple__211)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__211);
-  __Pyx_GIVEREF(__pyx_tuple__211);
-  __pyx_codeobj__212 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__211, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_7, __pyx_n_s_parseid, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__212)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__213 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__213)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__213);
-  __Pyx_GIVEREF(__pyx_tuple__213);
+  __pyx_tuple__212 = PyTuple_Pack(4, __pyx_n_s_source, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2); if (unlikely(!__pyx_tuple__212)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__212);
+  __Pyx_GIVEREF(__pyx_tuple__212);
+  __pyx_codeobj__213 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__212, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_7, __pyx_n_s_parseid, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__213)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__214 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__214)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__214);
+  __Pyx_GIVEREF(__pyx_tuple__214);
 
   /* "src/lxml/cleanup.pxi":3
  * # functions for tree cleanup and removing elements from subtrees
@@ -213490,13 +213680,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""cleanup_namespaces(tree_or_element, top_nsmap=None, keep_ns_prefixes=None)
  * 
  */
-  __pyx_tuple__214 = PyTuple_Pack(7, __pyx_n_s_tree_or_element, __pyx_n_s_top_nsmap, __pyx_n_s_keep_ns_prefixes, __pyx_n_s_element, __pyx_n_s_c_element, __pyx_n_s_doc_2, __pyx_n_s_prefix); if (unlikely(!__pyx_tuple__214)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__214);
-  __Pyx_GIVEREF(__pyx_tuple__214);
-  __pyx_codeobj__215 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__214, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_8, __pyx_n_s_cleanup_namespaces, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__215)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__216 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__216)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__216);
-  __Pyx_GIVEREF(__pyx_tuple__216);
+  __pyx_tuple__215 = PyTuple_Pack(7, __pyx_n_s_tree_or_element, __pyx_n_s_top_nsmap, __pyx_n_s_keep_ns_prefixes, __pyx_n_s_element, __pyx_n_s_c_element, __pyx_n_s_doc_2, __pyx_n_s_prefix); if (unlikely(!__pyx_tuple__215)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__215);
+  __Pyx_GIVEREF(__pyx_tuple__215);
+  __pyx_codeobj__216 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__215, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_8, __pyx_n_s_cleanup_namespaces, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__216)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__217 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__217)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__217);
+  __Pyx_GIVEREF(__pyx_tuple__217);
 
   /* "src/lxml/cleanup.pxi":33
  * 
@@ -213505,10 +213695,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""strip_attributes(tree_or_element, *attribute_names)
  * 
  */
-  __pyx_tuple__217 = PyTuple_Pack(4, __pyx_n_s_tree_or_element, __pyx_n_s_attribute_names, __pyx_n_s_matcher, __pyx_n_s_element); if (unlikely(!__pyx_tuple__217)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__217);
-  __Pyx_GIVEREF(__pyx_tuple__217);
-  __pyx_codeobj__218 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__217, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_8, __pyx_n_s_strip_attributes, 33, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__218)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__218 = PyTuple_Pack(4, __pyx_n_s_tree_or_element, __pyx_n_s_attribute_names, __pyx_n_s_matcher, __pyx_n_s_element); if (unlikely(!__pyx_tuple__218)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__218);
+  __Pyx_GIVEREF(__pyx_tuple__218);
+  __pyx_codeobj__219 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_8, __pyx_n_s_strip_attributes, 33, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__219)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/cleanup.pxi":74
  * 
@@ -213517,10 +213707,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""strip_elements(tree_or_element, *tag_names, with_tail=True)
  * 
  */
-  __pyx_tuple__219 = PyTuple_Pack(6, __pyx_n_s_tree_or_element, __pyx_n_s_with_tail, __pyx_n_s_tag_names, __pyx_n_s_matcher, __pyx_n_s_doc_2, __pyx_n_s_element); if (unlikely(!__pyx_tuple__219)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__219);
-  __Pyx_GIVEREF(__pyx_tuple__219);
-  __pyx_codeobj__220 = (PyObject*)__Pyx_PyCode_New(1, 1, 6, 0, CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__219, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_8, __pyx_n_s_strip_elements, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__220)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__220 = PyTuple_Pack(6, __pyx_n_s_tree_or_element, __pyx_n_s_with_tail, __pyx_n_s_tag_names, __pyx_n_s_matcher, __pyx_n_s_doc_2, __pyx_n_s_element); if (unlikely(!__pyx_tuple__220)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__220);
+  __Pyx_GIVEREF(__pyx_tuple__220);
+  __pyx_codeobj__221 = (PyObject*)__Pyx_PyCode_New(1, 1, 6, 0, CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__220, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_8, __pyx_n_s_strip_elements, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__221)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/cleanup.pxi":145
  * 
@@ -213529,10 +213719,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""strip_tags(tree_or_element, *tag_names)
  * 
  */
-  __pyx_tuple__221 = PyTuple_Pack(5, __pyx_n_s_tree_or_element, __pyx_n_s_tag_names, __pyx_n_s_matcher, __pyx_n_s_doc_2, __pyx_n_s_element); if (unlikely(!__pyx_tuple__221)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__221);
-  __Pyx_GIVEREF(__pyx_tuple__221);
-  __pyx_codeobj__222 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__221, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_8, __pyx_n_s_strip_tags, 145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__222)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__222 = PyTuple_Pack(5, __pyx_n_s_tree_or_element, __pyx_n_s_tag_names, __pyx_n_s_matcher, __pyx_n_s_doc_2, __pyx_n_s_element); if (unlikely(!__pyx_tuple__222)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__222);
+  __Pyx_GIVEREF(__pyx_tuple__222);
+  __pyx_codeobj__223 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__222, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_8, __pyx_n_s_strip_tags, 145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__223)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/extensions.pxi":371
  * 
@@ -213541,9 +213731,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     b"Number encoding",
  *     b"Unfinished literal",
  */
-  __pyx_tuple__223 = PyTuple_Pack(26, __pyx_n_b_Ok, __pyx_kp_b_Number_encoding, __pyx_kp_b_Unfinished_literal, __pyx_kp_b_Start_of_literal, __pyx_kp_b_Expected_for_variable_reference, __pyx_kp_b_Undefined_variable, __pyx_kp_b_Invalid_predicate, __pyx_kp_b_Invalid_expression, __pyx_kp_b_Missing_closing_curly_brace, __pyx_kp_b_Unregistered_function, __pyx_kp_b_Invalid_operand, __pyx_kp_b_Invalid_type, __pyx_kp_b_Invalid_number_of_arguments, __pyx_kp_b_Invalid_context_size, __pyx_kp_b_Invalid_context_position, __pyx_kp_b_Memory_allocation_error, __pyx_kp_b_Syntax_error, __pyx_kp_b_Resource_error, __pyx_kp_b_Sub_resource_error, __pyx_kp_b_Undefined_namespace_prefix, __pyx_kp_b_Encoding_error, __pyx_kp_b_Char_out_of_XML_range, __pyx_kp_b_Invalid_or_incomplete_context, __pyx_kp_b_Stack_usage_error, __pyx_kp_b_Forbidden_variable, __pyx_kp_b_Unknown_error); if (unlikely(!__pyx_tuple__223)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__223);
-  __Pyx_GIVEREF(__pyx_tuple__223);
+  __pyx_tuple__224 = PyTuple_Pack(26, __pyx_n_b_Ok, __pyx_kp_b_Number_encoding, __pyx_kp_b_Unfinished_literal, __pyx_kp_b_Start_of_literal, __pyx_kp_b_Expected_for_variable_reference, __pyx_kp_b_Undefined_variable, __pyx_kp_b_Invalid_predicate, __pyx_kp_b_Invalid_expression, __pyx_kp_b_Missing_closing_curly_brace, __pyx_kp_b_Unregistered_function, __pyx_kp_b_Invalid_operand, __pyx_kp_b_Invalid_type, __pyx_kp_b_Invalid_number_of_arguments, __pyx_kp_b_Invalid_context_size, __pyx_kp_b_Invalid_context_position, __pyx_kp_b_Memory_allocation_error, __pyx_kp_b_Syntax_error, __pyx_kp_b_Resource_error, __pyx_kp_b_Sub_resource_error, __pyx_kp_b_Undefined_namespace_prefix, __pyx_kp_b_Encoding_error, __pyx_kp_b_Char_out_of_XML_range, __pyx_kp_b_Invalid_or_incomplete_context, __pyx_kp_b_Stack_usage_error, __pyx_kp_b_Forbidden_variable, __pyx_kp_b_Unknown_error); if (unlikely(!__pyx_tuple__224)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__224);
+  __Pyx_GIVEREF(__pyx_tuple__224);
 
   /* "src/lxml/extensions.pxi":428
  * 
@@ -213552,13 +213742,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""Extension(module, function_mapping=None, ns=None)
  * 
  */
-  __pyx_tuple__224 = PyTuple_Pack(7, __pyx_n_s_module, __pyx_n_s_function_mapping, __pyx_n_s_ns, __pyx_n_s_functions, __pyx_n_s_function_name, __pyx_n_s_xpath_name, __pyx_n_s_name_2); if (unlikely(!__pyx_tuple__224)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__224);
-  __Pyx_GIVEREF(__pyx_tuple__224);
-  __pyx_codeobj__225 = (PyObject*)__Pyx_PyCode_New(2, 1, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__224, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_9, __pyx_n_s_Extension, 428, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__225)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__226 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__226)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__226);
-  __Pyx_GIVEREF(__pyx_tuple__226);
+  __pyx_tuple__225 = PyTuple_Pack(7, __pyx_n_s_module, __pyx_n_s_function_mapping, __pyx_n_s_ns, __pyx_n_s_functions, __pyx_n_s_function_name, __pyx_n_s_xpath_name, __pyx_n_s_name_2); if (unlikely(!__pyx_tuple__225)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__225);
+  __Pyx_GIVEREF(__pyx_tuple__225);
+  __pyx_codeobj__226 = (PyObject*)__Pyx_PyCode_New(2, 1, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__225, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_9, __pyx_n_s_Extension, 428, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__226)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__227 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__227)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__227);
+  __Pyx_GIVEREF(__pyx_tuple__227);
 
   /* "src/lxml/extensions.pxi":741
  *         # we need to use a Python class here, or PyPy will crash on creation
@@ -213567,10 +213757,10 @@ static int __Pyx_InitCachedConstants(void) {
  *             return self._parent
  * 
  */
-  __pyx_tuple__227 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__227)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__227);
-  __Pyx_GIVEREF(__pyx_tuple__227);
-  __pyx_codeobj__228 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_9, __pyx_n_s_getparent, 741, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__228)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__228 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__228)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__228);
+  __Pyx_GIVEREF(__pyx_tuple__228);
+  __pyx_codeobj__229 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__228, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_9, __pyx_n_s_getparent, 741, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__229)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/extensions.pxi":747
  *     # we need to use a Python class here, bytes cannot be C-subclassed
@@ -213579,10 +213769,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return self._parent
  * 
  */
-  __pyx_tuple__229 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__229)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__229);
-  __Pyx_GIVEREF(__pyx_tuple__229);
-  __pyx_codeobj__230 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__229, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_9, __pyx_n_s_getparent, 747, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__230)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__230 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__230)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__230);
+  __Pyx_GIVEREF(__pyx_tuple__230);
+  __pyx_codeobj__231 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__230, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_9, __pyx_n_s_getparent, 747, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__231)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/xpath.pxi":369
  * 
@@ -213591,10 +213781,10 @@ static int __Pyx_InitCachedConstants(void) {
  *                    regexp=True, smart_strings=True):
  *     u"""XPathEvaluator(etree_or_element, namespaces=None, extensions=None, regexp=True, smart_strings=True)
  */
-  __pyx_tuple__231 = PyTuple_Pack(5, __pyx_n_s_etree_or_element, __pyx_n_s_namespaces, __pyx_n_s_extensions, __pyx_n_s_regexp, __pyx_n_s_smart_strings); if (unlikely(!__pyx_tuple__231)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__231);
-  __Pyx_GIVEREF(__pyx_tuple__231);
-  __pyx_codeobj__232 = (PyObject*)__Pyx_PyCode_New(1, 4, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__231, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_10, __pyx_n_s_XPathEvaluator, 369, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__232)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__232 = PyTuple_Pack(5, __pyx_n_s_etree_or_element, __pyx_n_s_namespaces, __pyx_n_s_extensions, __pyx_n_s_regexp, __pyx_n_s_smart_strings); if (unlikely(!__pyx_tuple__232)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__232);
+  __Pyx_GIVEREF(__pyx_tuple__232);
+  __pyx_codeobj__233 = (PyObject*)__Pyx_PyCode_New(1, 4, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__232, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_10, __pyx_n_s_XPathEvaluator, 369, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__233)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/xpath.pxi":467
  * cdef object _replace_strings
@@ -213603,9 +213793,9 @@ static int __Pyx_InitCachedConstants(void) {
  * _find_namespaces = re.compile(b'({[^}]+})').findall
  * 
  */
-  __pyx_tuple__234 = PyTuple_Pack(1, __pyx_kp_b__233); if (unlikely(!__pyx_tuple__234)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__234);
-  __Pyx_GIVEREF(__pyx_tuple__234);
+  __pyx_tuple__235 = PyTuple_Pack(1, __pyx_kp_b__234); if (unlikely(!__pyx_tuple__235)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__235);
+  __Pyx_GIVEREF(__pyx_tuple__235);
 
   /* "src/lxml/xpath.pxi":468
  * cdef object _find_namespaces
@@ -213614,9 +213804,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * cdef class ETXPath(XPath):
  */
-  __pyx_tuple__236 = PyTuple_Pack(1, __pyx_kp_b__235); if (unlikely(!__pyx_tuple__236)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__236);
-  __Pyx_GIVEREF(__pyx_tuple__236);
+  __pyx_tuple__237 = PyTuple_Pack(1, __pyx_kp_b__236); if (unlikely(!__pyx_tuple__237)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__237);
+  __Pyx_GIVEREF(__pyx_tuple__237);
 
   /* "src/lxml/xslt.pxi":435
  * 
@@ -213625,10 +213815,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""strparam(strval)
  * 
  */
-  __pyx_tuple__237 = PyTuple_Pack(1, __pyx_n_s_strval); if (unlikely(!__pyx_tuple__237)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__237);
-  __Pyx_GIVEREF(__pyx_tuple__237);
-  __pyx_codeobj__238 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__237, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_11, __pyx_n_s_strparam, 435, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__238)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__238 = PyTuple_Pack(1, __pyx_n_s_strval); if (unlikely(!__pyx_tuple__238)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__238);
+  __Pyx_GIVEREF(__pyx_tuple__238);
+  __pyx_codeobj__239 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__238, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_11, __pyx_n_s_strparam, 435, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__239)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/xslt.pxi":449
  * 
@@ -213637,10 +213827,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""set_global_max_depth(max_depth)
  * 
  */
-  __pyx_tuple__239 = PyTuple_Pack(1, __pyx_n_s_max_depth); if (unlikely(!__pyx_tuple__239)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__239);
-  __Pyx_GIVEREF(__pyx_tuple__239);
-  __pyx_codeobj__240 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__239, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_11, __pyx_n_s_set_global_max_depth, 449, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__240)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__240 = PyTuple_Pack(1, __pyx_n_s_max_depth); if (unlikely(!__pyx_tuple__240)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__240);
+  __Pyx_GIVEREF(__pyx_tuple__240);
+  __pyx_codeobj__241 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__240, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml_11, __pyx_n_s_set_global_max_depth, 449, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__241)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   /* "src/lxml/xslt.pxi":837
  * # XSLT PI support
@@ -213649,9 +213839,9 @@ static int __Pyx_InitCachedConstants(void) {
  * cdef object _FIND_PI_HREF = _RE_PI_HREF.findall
  * cdef object _REPLACE_PI_HREF = _RE_PI_HREF.sub
  */
-  __pyx_tuple__241 = PyTuple_Pack(1, __pyx_kp_u_s_href_s_s); if (unlikely(!__pyx_tuple__241)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__241);
-  __Pyx_GIVEREF(__pyx_tuple__241);
+  __pyx_tuple__242 = PyTuple_Pack(1, __pyx_kp_u_s_href_s_s); if (unlikely(!__pyx_tuple__242)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__242);
+  __Pyx_GIVEREF(__pyx_tuple__242);
 
   /* "src/lxml/xmlschema.pxi":22
  * # XMLSchema
@@ -213660,9 +213850,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"boolean(//xs:attribute[@default or @fixed][1])",
  *     namespaces={u'xs': u'http://www.w3.org/2001/XMLSchema'})
  */
-  __pyx_tuple__242 = PyTuple_Pack(1, __pyx_kp_u_boolean_xs_attribute_default_or); if (unlikely(!__pyx_tuple__242)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__242);
-  __Pyx_GIVEREF(__pyx_tuple__242);
+  __pyx_tuple__243 = PyTuple_Pack(1, __pyx_kp_u_boolean_xs_attribute_default_or); if (unlikely(!__pyx_tuple__243)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__243);
+  __Pyx_GIVEREF(__pyx_tuple__243);
   __Pyx_RefNannyFinishContext();
   return 0;
   __pyx_L1_error:;
@@ -213933,7 +214123,7 @@ PyMODINIT_FUNC PyInit_etree(void)
   if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ListErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__ListErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (PyObject_SetAttrString(__pyx_m, "_ListErrorLog", (PyObject *)&__pyx_type_4lxml_5etree__ListErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_5etree__ListErrorLog = &__pyx_type_4lxml_5etree__ListErrorLog;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__ErrorLogContext) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__ErrorLogContext) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_5etree__ErrorLogContext.tp_print = 0;
   __pyx_ptype_4lxml_5etree__ErrorLogContext = &__pyx_type_4lxml_5etree__ErrorLogContext;
   __pyx_vtabptr_4lxml_5etree__ErrorLog = &__pyx_vtable_4lxml_5etree__ErrorLog;
@@ -213945,38 +214135,38 @@ PyMODINIT_FUNC PyInit_etree(void)
   __pyx_vtable_4lxml_5etree__ErrorLog.disconnect = (int (*)(struct __pyx_obj_4lxml_5etree__ErrorLog *))__pyx_f_4lxml_5etree_9_ErrorLog_disconnect;
   __pyx_vtable_4lxml_5etree__ErrorLog.clear = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__ErrorLog *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_9_ErrorLog_clear;
   __pyx_type_4lxml_5etree__ErrorLog.tp_base = __pyx_ptype_4lxml_5etree__ListErrorLog;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__ErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__ErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_5etree__ErrorLog.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__ErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyObject_SetAttrString(__pyx_m, "_ErrorLog", (PyObject *)&__pyx_type_4lxml_5etree__ErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__ErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "_ErrorLog", (PyObject *)&__pyx_type_4lxml_5etree__ErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_5etree__ErrorLog = &__pyx_type_4lxml_5etree__ErrorLog;
   __pyx_vtabptr_4lxml_5etree__DomainErrorLog = &__pyx_vtable_4lxml_5etree__DomainErrorLog;
   __pyx_vtable_4lxml_5etree__DomainErrorLog.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ErrorLog;
   __pyx_vtable_4lxml_5etree__DomainErrorLog.__pyx_base.__pyx_base.__pyx_base.receive = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, struct __pyx_obj_4lxml_5etree__LogEntry *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_15_DomainErrorLog_receive;
   __pyx_type_4lxml_5etree__DomainErrorLog.tp_base = __pyx_ptype_4lxml_5etree__ErrorLog;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__DomainErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__DomainErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_5etree__DomainErrorLog.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__DomainErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__DomainErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyObject_SetAttrString(__pyx_m, "_DomainErrorLog", (PyObject *)&__pyx_type_4lxml_5etree__DomainErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__DomainErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__DomainErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "_DomainErrorLog", (PyObject *)&__pyx_type_4lxml_5etree__DomainErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_5etree__DomainErrorLog = &__pyx_type_4lxml_5etree__DomainErrorLog;
   __pyx_vtabptr_4lxml_5etree__RotatingErrorLog = &__pyx_vtable_4lxml_5etree__RotatingErrorLog;
   __pyx_vtable_4lxml_5etree__RotatingErrorLog.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ErrorLog;
   __pyx_vtable_4lxml_5etree__RotatingErrorLog.__pyx_base.__pyx_base.__pyx_base.receive = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, struct __pyx_obj_4lxml_5etree__LogEntry *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive;
   __pyx_type_4lxml_5etree__RotatingErrorLog.tp_base = __pyx_ptype_4lxml_5etree__ErrorLog;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__RotatingErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__RotatingErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_5etree__RotatingErrorLog.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__RotatingErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__RotatingErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyObject_SetAttrString(__pyx_m, "_RotatingErrorLog", (PyObject *)&__pyx_type_4lxml_5etree__RotatingErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__RotatingErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__RotatingErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "_RotatingErrorLog", (PyObject *)&__pyx_type_4lxml_5etree__RotatingErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_5etree__RotatingErrorLog = &__pyx_type_4lxml_5etree__RotatingErrorLog;
   __pyx_vtabptr_4lxml_5etree_PyErrorLog = &__pyx_vtable_4lxml_5etree_PyErrorLog;
   __pyx_vtable_4lxml_5etree_PyErrorLog.__pyx_base = *__pyx_vtabptr_4lxml_5etree__BaseErrorLog;
   __pyx_vtable_4lxml_5etree_PyErrorLog.__pyx_base.copy = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_10PyErrorLog_copy;
   __pyx_vtable_4lxml_5etree_PyErrorLog.__pyx_base.receive = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, struct __pyx_obj_4lxml_5etree__LogEntry *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_10PyErrorLog_receive;
   __pyx_type_4lxml_5etree_PyErrorLog.tp_base = __pyx_ptype_4lxml_5etree__BaseErrorLog;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_PyErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_PyErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_5etree_PyErrorLog.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_PyErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree_PyErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyObject_SetAttrString(__pyx_m, "PyErrorLog", (PyObject *)&__pyx_type_4lxml_5etree_PyErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_PyErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree_PyErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "PyErrorLog", (PyObject *)&__pyx_type_4lxml_5etree_PyErrorLog) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_5etree_PyErrorLog = &__pyx_type_4lxml_5etree_PyErrorLog;
   __pyx_vtabptr_4lxml_5etree__Document = &__pyx_vtable_4lxml_5etree__Document;
   __pyx_vtable_4lxml_5etree__Document.getroot = (PyObject *(*)(struct LxmlDocument *))__pyx_f_4lxml_5etree_9_Document_getroot;
@@ -214477,9 +214667,9 @@ PyMODINIT_FUNC PyInit_etree(void)
   __pyx_vtable_4lxml_5etree__ParserContext._handleParseResult = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__ParserContext *, struct __pyx_obj_4lxml_5etree__BaseParser *, xmlDoc *, PyObject *))__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult;
   __pyx_vtable_4lxml_5etree__ParserContext._handleParseResultDoc = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree__ParserContext *, struct __pyx_obj_4lxml_5etree__BaseParser *, xmlDoc *, PyObject *))__pyx_f_4lxml_5etree_14_ParserContext__handleParseResultDoc;
   __pyx_type_4lxml_5etree__ParserContext.tp_base = __pyx_ptype_4lxml_5etree__ResolverContext;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__ParserContext) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__ParserContext) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_5etree__ParserContext.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ParserContext.tp_dict, __pyx_vtabptr_4lxml_5etree__ParserContext) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ParserContext.tp_dict, __pyx_vtabptr_4lxml_5etree__ParserContext) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_5etree__ParserContext = &__pyx_type_4lxml_5etree__ParserContext;
   __pyx_vtabptr_4lxml_5etree__SaxParserContext = &__pyx_vtable_4lxml_5etree__SaxParserContext;
   __pyx_vtable_4lxml_5etree__SaxParserContext.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ParserContext;
@@ -214590,59 +214780,59 @@ PyMODINIT_FUNC PyInit_etree(void)
   __pyx_vtable_4lxml_5etree__BaseParser._parseDoc = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *, char *, int, char *))__pyx_f_4lxml_5etree_11_BaseParser__parseDoc;
   __pyx_vtable_4lxml_5etree__BaseParser._parseDocFromFile = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *, char *))__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile;
   __pyx_vtable_4lxml_5etree__BaseParser._parseDocFromFilelike = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *, PyObject *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__BaseParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__BaseParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_5etree__BaseParser.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__BaseParser.tp_dict, __pyx_vtabptr_4lxml_5etree__BaseParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__BaseParser.tp_dict, __pyx_vtabptr_4lxml_5etree__BaseParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_5etree__BaseParser = &__pyx_type_4lxml_5etree__BaseParser;
   __pyx_vtabptr_4lxml_5etree__FeedParser = &__pyx_vtable_4lxml_5etree__FeedParser;
   __pyx_vtable_4lxml_5etree__FeedParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree__BaseParser;
   __pyx_vtable_4lxml_5etree__FeedParser.feed = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__FeedParser *, PyObject *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_11_FeedParser_feed;
   __pyx_vtable_4lxml_5etree__FeedParser.close = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__FeedParser *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_11_FeedParser_close;
   __pyx_type_4lxml_5etree__FeedParser.tp_base = __pyx_ptype_4lxml_5etree__BaseParser;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__FeedParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__FeedParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_5etree__FeedParser.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__FeedParser.tp_dict, __pyx_vtabptr_4lxml_5etree__FeedParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyObject_SetAttrString(__pyx_m, "_FeedParser", (PyObject *)&__pyx_type_4lxml_5etree__FeedParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__FeedParser.tp_dict, __pyx_vtabptr_4lxml_5etree__FeedParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "_FeedParser", (PyObject *)&__pyx_type_4lxml_5etree__FeedParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_5etree__FeedParser = &__pyx_type_4lxml_5etree__FeedParser;
   __pyx_vtabptr_4lxml_5etree_XMLParser = &__pyx_vtable_4lxml_5etree_XMLParser;
   __pyx_vtable_4lxml_5etree_XMLParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree__FeedParser;
   __pyx_type_4lxml_5etree_XMLParser.tp_base = __pyx_ptype_4lxml_5etree__FeedParser;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_XMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_XMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_5etree_XMLParser.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_XMLParser.tp_dict, __pyx_vtabptr_4lxml_5etree_XMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyObject_SetAttrString(__pyx_m, "XMLParser", (PyObject *)&__pyx_type_4lxml_5etree_XMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_XMLParser.tp_dict, __pyx_vtabptr_4lxml_5etree_XMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "XMLParser", (PyObject *)&__pyx_type_4lxml_5etree_XMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_5etree_XMLParser = &__pyx_type_4lxml_5etree_XMLParser;
   __pyx_vtabptr_4lxml_5etree_XMLPullParser = &__pyx_vtable_4lxml_5etree_XMLPullParser;
   __pyx_vtable_4lxml_5etree_XMLPullParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree_XMLParser;
   __pyx_type_4lxml_5etree_XMLPullParser.tp_base = __pyx_ptype_4lxml_5etree_XMLParser;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_XMLPullParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_XMLPullParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_5etree_XMLPullParser.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_XMLPullParser.tp_dict, __pyx_vtabptr_4lxml_5etree_XMLPullParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyObject_SetAttrString(__pyx_m, "XMLPullParser", (PyObject *)&__pyx_type_4lxml_5etree_XMLPullParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_XMLPullParser.tp_dict, __pyx_vtabptr_4lxml_5etree_XMLPullParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "XMLPullParser", (PyObject *)&__pyx_type_4lxml_5etree_XMLPullParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_5etree_XMLPullParser = &__pyx_type_4lxml_5etree_XMLPullParser;
   __pyx_vtabptr_4lxml_5etree_ETCompatXMLParser = &__pyx_vtable_4lxml_5etree_ETCompatXMLParser;
   __pyx_vtable_4lxml_5etree_ETCompatXMLParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree_XMLParser;
   __pyx_type_4lxml_5etree_ETCompatXMLParser.tp_base = __pyx_ptype_4lxml_5etree_XMLParser;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_ETCompatXMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_ETCompatXMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_5etree_ETCompatXMLParser.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_ETCompatXMLParser.tp_dict, __pyx_vtabptr_4lxml_5etree_ETCompatXMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyObject_SetAttrString(__pyx_m, "ETCompatXMLParser", (PyObject *)&__pyx_type_4lxml_5etree_ETCompatXMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_ETCompatXMLParser.tp_dict, __pyx_vtabptr_4lxml_5etree_ETCompatXMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "ETCompatXMLParser", (PyObject *)&__pyx_type_4lxml_5etree_ETCompatXMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_5etree_ETCompatXMLParser = &__pyx_type_4lxml_5etree_ETCompatXMLParser;
   __pyx_vtabptr_4lxml_5etree_HTMLParser = &__pyx_vtable_4lxml_5etree_HTMLParser;
   __pyx_vtable_4lxml_5etree_HTMLParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree__FeedParser;
   __pyx_type_4lxml_5etree_HTMLParser.tp_base = __pyx_ptype_4lxml_5etree__FeedParser;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_HTMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_HTMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_5etree_HTMLParser.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_HTMLParser.tp_dict, __pyx_vtabptr_4lxml_5etree_HTMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyObject_SetAttrString(__pyx_m, "HTMLParser", (PyObject *)&__pyx_type_4lxml_5etree_HTMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_HTMLParser.tp_dict, __pyx_vtabptr_4lxml_5etree_HTMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "HTMLParser", (PyObject *)&__pyx_type_4lxml_5etree_HTMLParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_5etree_HTMLParser = &__pyx_type_4lxml_5etree_HTMLParser;
   __pyx_vtabptr_4lxml_5etree_HTMLPullParser = &__pyx_vtable_4lxml_5etree_HTMLPullParser;
   __pyx_vtable_4lxml_5etree_HTMLPullParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree_HTMLParser;
   __pyx_type_4lxml_5etree_HTMLPullParser.tp_base = __pyx_ptype_4lxml_5etree_HTMLParser;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_HTMLPullParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_HTMLPullParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_5etree_HTMLPullParser.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_HTMLPullParser.tp_dict, __pyx_vtabptr_4lxml_5etree_HTMLPullParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyObject_SetAttrString(__pyx_m, "HTMLPullParser", (PyObject *)&__pyx_type_4lxml_5etree_HTMLPullParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_HTMLPullParser.tp_dict, __pyx_vtabptr_4lxml_5etree_HTMLPullParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "HTMLPullParser", (PyObject *)&__pyx_type_4lxml_5etree_HTMLPullParser) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_5etree_HTMLPullParser = &__pyx_type_4lxml_5etree_HTMLPullParser;
   __pyx_vtabptr_4lxml_5etree__SaxParserTarget = &__pyx_vtable_4lxml_5etree__SaxParserTarget;
   __pyx_vtable_4lxml_5etree__SaxParserTarget._handleSaxStart = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxStart;
@@ -216123,7 +216313,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *         raise KeyError, key
  * 
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_1__getitem__, 0, __pyx_n_s_ImmutableMapping___getitem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__121)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_1__getitem__, 0, __pyx_n_s_ImmutableMapping___getitem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__122)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_getitem, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -216135,7 +216325,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *         raise KeyError, key
  * 
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_3__setitem__, 0, __pyx_n_s_ImmutableMapping___setitem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__123)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_3__setitem__, 0, __pyx_n_s_ImmutableMapping___setitem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__124)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_setitem, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -216147,7 +216337,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *         raise KeyError, key
  * 
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_5__delitem__, 0, __pyx_n_s_ImmutableMapping___delitem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__125)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_5__delitem__, 0, __pyx_n_s_ImmutableMapping___delitem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__126)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_delitem, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -216159,7 +216349,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *         return False
  * 
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_7__contains__, 0, __pyx_n_s_ImmutableMapping___contains, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__127)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_7__contains__, 0, __pyx_n_s_ImmutableMapping___contains, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__128)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_contains, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -216171,7 +216361,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *         return 0
  * 
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_9__len__, 0, __pyx_n_s_ImmutableMapping___len, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__129)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_9__len__, 0, __pyx_n_s_ImmutableMapping___len, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__130)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_len, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -216183,7 +216373,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *         return ITER_EMPTY
  *     iterkeys = itervalues = iteritems = __iter__
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_11__iter__, 0, __pyx_n_s_ImmutableMapping___iter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_11__iter__, 0, __pyx_n_s_ImmutableMapping___iter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__132)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_iter_2, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -216380,7 +216570,7 @@ PyMODINIT_FUNC PyInit_etree(void)
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_encode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__132, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__133, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (!(likely(PyBytes_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_7)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -216433,7 +216623,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  */
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__133, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__134, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_match); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -216451,7 +216641,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     u"""Registers a namespace prefix that newly created Elements in that
  *     namespace will use.  The registry is global, and any existing
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_1register_namespace, 0, __pyx_n_s_register_namespace, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__135)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_1register_namespace, 0, __pyx_n_s_register_namespace, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__136)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_register_namespace, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -216506,9 +216696,9 @@ PyMODINIT_FUNC PyInit_etree(void)
  *         super(_Error, self).__init__(message)
  *         if error_log is None:
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9LxmlError_1__init__, 0, __pyx_n_s_LxmlError___init, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__137)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9LxmlError_1__init__, 0, __pyx_n_s_LxmlError___init, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__138)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__138);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__139);
   if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_init, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
@@ -216653,7 +216843,7 @@ PyMODINIT_FUNC PyInit_etree(void)
       __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_group); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L53_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__139, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L53_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__140, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L53_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
@@ -216894,187 +217084,187 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     u"""clear_error_log()
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_3clear_error_log, 0, __pyx_n_s_clear_error_log_2, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__140)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_3clear_error_log, 0, __pyx_n_s_clear_error_log_2, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__141)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_clear_error_log_2, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":545
+  /* "src/lxml/xmlerror.pxi":555
  * 
  * cdef _BaseErrorLog __GLOBAL_ERROR_LOG
  * __GLOBAL_ERROR_LOG = _RotatingErrorLog(__MAX_LOG_SIZE)             # <<<<<<<<<<<<<<
  * 
  * cdef _BaseErrorLog _getGlobalErrorLog():
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__RotatingErrorLog), __pyx_tuple__141, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__RotatingErrorLog), __pyx_tuple__142, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG));
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG, ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1));
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":574
+  /* "src/lxml/xmlerror.pxi":584
  *     return _getGlobalErrorLog().copy()
  * 
  * def use_global_python_log(PyErrorLog log not None):             # <<<<<<<<<<<<<<
  *     u"""use_global_python_log(log)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_5use_global_python_log, 0, __pyx_n_s_use_global_python_log, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__143)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_5use_global_python_log, 0, __pyx_n_s_use_global_python_log, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__144)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_use_global_python_log, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_use_global_python_log, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":717
+  /* "src/lxml/xmlerror.pxi":727
  * 
  * 
  * class ErrorLevels(object):             # <<<<<<<<<<<<<<
  *     u"Libxml2 error levels"
  * 
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_builtin_object);
   __Pyx_GIVEREF(__pyx_builtin_object);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_builtin_object);
-  __pyx_t_8 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_8, __pyx_t_1, __pyx_n_s_ErrorLevels, __pyx_n_s_ErrorLevels, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_error_levels); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_8, __pyx_t_1, __pyx_n_s_ErrorLevels, __pyx_n_s_ErrorLevels, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_error_levels); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = __Pyx_Py3ClassCreate(__pyx_t_8, __pyx_n_s_ErrorLevels, __pyx_t_1, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_Py3ClassCreate(__pyx_t_8, __pyx_n_s_ErrorLevels, __pyx_t_1, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ErrorLevels, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ErrorLevels, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":720
+  /* "src/lxml/xmlerror.pxi":730
  *     u"Libxml2 error levels"
  * 
  * class ErrorDomains(object):             # <<<<<<<<<<<<<<
  *     u"Libxml2 error domains"
  * 
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_builtin_object);
   __Pyx_GIVEREF(__pyx_builtin_object);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_builtin_object);
-  __pyx_t_8 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_8, __pyx_t_1, __pyx_n_s_ErrorDomains, __pyx_n_s_ErrorDomains, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_error_domains); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_8, __pyx_t_1, __pyx_n_s_ErrorDomains, __pyx_n_s_ErrorDomains, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_error_domains); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = __Pyx_Py3ClassCreate(__pyx_t_8, __pyx_n_s_ErrorDomains, __pyx_t_1, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_Py3ClassCreate(__pyx_t_8, __pyx_n_s_ErrorDomains, __pyx_t_1, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ErrorDomains, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ErrorDomains, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":723
+  /* "src/lxml/xmlerror.pxi":733
  *     u"Libxml2 error domains"
  * 
  * class ErrorTypes(object):             # <<<<<<<<<<<<<<
  *     u"Libxml2 error types"
  * 
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_builtin_object);
   __Pyx_GIVEREF(__pyx_builtin_object);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_builtin_object);
-  __pyx_t_8 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_8, __pyx_t_1, __pyx_n_s_ErrorTypes, __pyx_n_s_ErrorTypes, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_error_types); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_8, __pyx_t_1, __pyx_n_s_ErrorTypes, __pyx_n_s_ErrorTypes, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_error_types); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = __Pyx_Py3ClassCreate(__pyx_t_8, __pyx_n_s_ErrorTypes, __pyx_t_1, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_Py3ClassCreate(__pyx_t_8, __pyx_n_s_ErrorTypes, __pyx_t_1, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ErrorTypes, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ErrorTypes, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":726
+  /* "src/lxml/xmlerror.pxi":736
  *     u"Libxml2 error types"
  * 
  * class RelaxNGErrorTypes(object):             # <<<<<<<<<<<<<<
  *     u"Libxml2 RelaxNG error types"
  * 
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_builtin_object);
   __Pyx_GIVEREF(__pyx_builtin_object);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_builtin_object);
-  __pyx_t_8 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_8, __pyx_t_1, __pyx_n_s_RelaxNGErrorTypes, __pyx_n_s_RelaxNGErrorTypes, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_RelaxNG_error_types); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_8, __pyx_t_1, __pyx_n_s_RelaxNGErrorTypes, __pyx_n_s_RelaxNGErrorTypes, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_RelaxNG_error_types); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = __Pyx_Py3ClassCreate(__pyx_t_8, __pyx_n_s_RelaxNGErrorTypes, __pyx_t_1, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_Py3ClassCreate(__pyx_t_8, __pyx_n_s_RelaxNGErrorTypes, __pyx_t_1, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RelaxNGErrorTypes, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RelaxNGErrorTypes, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":739
+  /* "src/lxml/xmlerror.pxi":749
  * # cannot handle strings that are a few thousand bytes in length.
  * 
  * cdef object __ERROR_LEVELS = (u"""\             # <<<<<<<<<<<<<<
  * NONE=0
  * WARNING=1
  */
-  __Pyx_INCREF(__pyx_tuple__144);
+  __Pyx_INCREF(__pyx_tuple__145);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree___ERROR_LEVELS);
-  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___ERROR_LEVELS, __pyx_tuple__144);
-  __Pyx_GIVEREF(__pyx_tuple__144);
+  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___ERROR_LEVELS, __pyx_tuple__145);
+  __Pyx_GIVEREF(__pyx_tuple__145);
 
-  /* "src/lxml/xmlerror.pxi":746
+  /* "src/lxml/xmlerror.pxi":756
  * """,)
  * 
  * cdef object __ERROR_DOMAINS = (u"""\             # <<<<<<<<<<<<<<
  * NONE=0
  * PARSER=1
  */
-  __Pyx_INCREF(__pyx_tuple__145);
+  __Pyx_INCREF(__pyx_tuple__146);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree___ERROR_DOMAINS);
-  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___ERROR_DOMAINS, __pyx_tuple__145);
-  __Pyx_GIVEREF(__pyx_tuple__145);
+  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___ERROR_DOMAINS, __pyx_tuple__146);
+  __Pyx_GIVEREF(__pyx_tuple__146);
 
-  /* "src/lxml/xmlerror.pxi":780
+  /* "src/lxml/xmlerror.pxi":790
  * """,)
  * 
  * cdef object __PARSER_ERROR_TYPES = (u"""\             # <<<<<<<<<<<<<<
  * ERR_OK=0
  * ERR_INTERNAL_ERROR=1
  */
-  __Pyx_INCREF(__pyx_tuple__146);
+  __Pyx_INCREF(__pyx_tuple__147);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree___PARSER_ERROR_TYPES);
-  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___PARSER_ERROR_TYPES, __pyx_tuple__146);
-  __Pyx_GIVEREF(__pyx_tuple__146);
+  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___PARSER_ERROR_TYPES, __pyx_tuple__147);
+  __Pyx_GIVEREF(__pyx_tuple__147);
 
-  /* "src/lxml/xmlerror.pxi":1537
+  /* "src/lxml/xmlerror.pxi":1547
  * """,)
  * 
  * cdef object __RELAXNG_ERROR_TYPES = (u"""\             # <<<<<<<<<<<<<<
  * RELAXNG_OK=0
  * RELAXNG_ERR_MEMORY=1
  */
-  __Pyx_INCREF(__pyx_tuple__147);
+  __Pyx_INCREF(__pyx_tuple__148);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES);
-  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES, __pyx_tuple__147);
-  __Pyx_GIVEREF(__pyx_tuple__147);
+  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES, __pyx_tuple__148);
+  __Pyx_GIVEREF(__pyx_tuple__148);
 
-  /* "src/lxml/xmlerror.pxi":1581
+  /* "src/lxml/xmlerror.pxi":1591
  * # --- END: GENERATED CONSTANTS ---
  * 
  * __initErrorConstants()             # <<<<<<<<<<<<<<
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree___initErrorConstants(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_5etree___initErrorConstants(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -217101,7 +217291,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  */
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__148, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__149, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -217173,9 +217363,9 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     u"""Element(_tag, attrib=None, nsmap=None, **_extra)
  * 
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7Element, 0, __pyx_n_s_Element, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__150)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7Element, 0, __pyx_n_s_Element, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__151)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__151);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__152);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_Element, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
@@ -217186,9 +217376,9 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     u"""Comment(text=None)
  * 
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9Comment, 0, __pyx_n_s_Comment, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__153)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9Comment, 0, __pyx_n_s_Comment, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__154)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__154);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__155);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_Comment, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
@@ -217199,9 +217389,9 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     u"""ProcessingInstruction(target, text=None)
  * 
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11ProcessingInstruction, 0, __pyx_n_s_ProcessingInstruction, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__156)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11ProcessingInstruction, 0, __pyx_n_s_ProcessingInstruction, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__157)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__157);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__158);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_ProcessingInstruction, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
@@ -217224,7 +217414,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     u"""Entity(name)
  * 
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13Entity, 0, __pyx_n_s_Entity, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__159)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13Entity, 0, __pyx_n_s_Entity, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__160)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_Entity, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -217236,9 +217426,9 @@ PyMODINIT_FUNC PyInit_etree(void)
  *                attrib=None, nsmap=None, **_extra):
  *     u"""SubElement(_parent, _tag, attrib=None, nsmap=None, **_extra)
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_15SubElement, 0, __pyx_n_s_SubElement, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__161)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_15SubElement, 0, __pyx_n_s_SubElement, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__162)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__162);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__163);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_SubElement, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
@@ -217253,9 +217443,9 @@ PyMODINIT_FUNC PyInit_etree(void)
   __Pyx_GOTREF(__pyx_t_8);
   if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_file, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_parser, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17ElementTree, 0, __pyx_n_s_ElementTree, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__164)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17ElementTree, 0, __pyx_n_s_ElementTree, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__165)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__165);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__166);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_8);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_ElementTree, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -217271,9 +217461,9 @@ PyMODINIT_FUNC PyInit_etree(void)
   __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_19HTML, 0, __pyx_n_s_HTML, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__167)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_19HTML, 0, __pyx_n_s_HTML, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__168)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__168);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__169);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_8, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_HTML, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -217289,9 +217479,9 @@ PyMODINIT_FUNC PyInit_etree(void)
   __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21XML, 0, __pyx_n_s_XML, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__170)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21XML, 0, __pyx_n_s_XML, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__171)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__171);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__172);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_8);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_XML, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -217307,9 +217497,9 @@ PyMODINIT_FUNC PyInit_etree(void)
   __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23fromstring, 0, __pyx_n_s_fromstring, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__173)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23fromstring, 0, __pyx_n_s_fromstring, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__174)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__174);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__175);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_8, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_fromstring, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -217322,9 +217512,9 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     u"""fromstringlist(strings, parser=None)
  * 
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_25fromstringlist, 0, __pyx_n_s_fromstringlist, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__176)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_25fromstringlist, 0, __pyx_n_s_fromstringlist, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__177)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__177);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__178);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_fromstringlist, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
@@ -217335,7 +217525,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     u"""iselement(element)
  * 
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27iselement, 0, __pyx_n_s_iselement, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__179)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27iselement, 0, __pyx_n_s_iselement, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__180)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_iselement, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -217354,7 +217544,7 @@ PyMODINIT_FUNC PyInit_etree(void)
   if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_pretty_print, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_with_tail, ((PyObject *)Py_True)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_29dump, 0, __pyx_n_s_dump, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__181)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_29dump, 0, __pyx_n_s_dump, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__182)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_8);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -217416,7 +217606,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *              xml_declaration=None, bint pretty_print=False, bint with_tail=True,
  *              standalone=None, doctype=None,
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_31tostring, 0, __pyx_n_s_tostring, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__183)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_31tostring, 0, __pyx_n_s_tostring, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__184)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_8, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -217430,7 +217620,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     u"""tostringlist(element_or_tree, *args, **kwargs)
  * 
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_33tostringlist, 0, __pyx_n_s_tostringlist, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__185)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_33tostringlist, 0, __pyx_n_s_tostringlist, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__186)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_tostringlist, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -217470,7 +217660,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *               bint with_tail=True, doctype=None):
  *     u"""tounicode(element_or_tree, method="xml", pretty_print=False,
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_35tounicode, 0, __pyx_n_s_tounicode, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__187)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_35tounicode, 0, __pyx_n_s_tounicode, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__188)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_8);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -217487,9 +217677,9 @@ PyMODINIT_FUNC PyInit_etree(void)
   __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_37parse, 0, __pyx_n_s_parse, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__189)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_37parse, 0, __pyx_n_s_parse, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__190)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__190);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__191);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_8, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -217502,9 +217692,9 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     u"""set_element_class_lookup(lookup = None)
  * 
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_39set_element_class_lookup, 0, __pyx_n_s_set_element_class_lookup, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__192)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_39set_element_class_lookup, 0, __pyx_n_s_set_element_class_lookup, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__193)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__193);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__194);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_element_class_lookup, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
@@ -217629,7 +217819,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     u"""FunctionNamespace(ns_uri)
  * 
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_41FunctionNamespace, 0, __pyx_n_s_FunctionNamespace, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__195)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_41FunctionNamespace, 0, __pyx_n_s_FunctionNamespace, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__196)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_FunctionNamespace, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -217660,7 +217850,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *         super(_ParseError, self).__init__(message)
  *         self.position = (line, column)
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10ParseError_1__init__, 0, __pyx_n_s_ParseError___init, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__197)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10ParseError_1__init__, 0, __pyx_n_s_ParseError___init, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__198)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_init, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -217787,7 +217977,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  */
   __pyx_t_5 = __pyx_f_4lxml_5etree__setupPythonUnicode(); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":484
+  /* "src/lxml/parser.pxi":495
  * 
  * cdef xmlparser.xmlExternalEntityLoader __DEFAULT_ENTITY_LOADER
  * __DEFAULT_ENTITY_LOADER = xmlparser.xmlGetExternalEntityLoader()             # <<<<<<<<<<<<<<
@@ -217796,7 +217986,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  */
   __pyx_v_4lxml_5etree___DEFAULT_ENTITY_LOADER = xmlGetExternalEntityLoader();
 
-  /* "src/lxml/parser.pxi":486
+  /* "src/lxml/parser.pxi":497
  * __DEFAULT_ENTITY_LOADER = xmlparser.xmlGetExternalEntityLoader()
  * 
  * xmlparser.xmlSetExternalEntityLoader(<xmlparser.xmlExternalEntityLoader>_local_resolver)             # <<<<<<<<<<<<<<
@@ -217805,7 +217995,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  */
   xmlSetExternalEntityLoader(((xmlExternalEntityLoader)__pyx_f_4lxml_5etree__local_resolver));
 
-  /* "src/lxml/parser.pxi":1388
+  /* "src/lxml/parser.pxi":1399
  *     xmlparser.XML_PARSE_NOCDATA |
  *     xmlparser.XML_PARSE_NONET   |
  *     xmlparser.XML_PARSE_COMPACT |             # <<<<<<<<<<<<<<
@@ -217814,30 +218004,30 @@ PyMODINIT_FUNC PyInit_etree(void)
  */
   __pyx_v_4lxml_5etree__XML_DEFAULT_PARSE_OPTIONS = ((((XML_PARSE_NOENT | XML_PARSE_NOCDATA) | XML_PARSE_NONET) | XML_PARSE_COMPACT) | XML_PARSE_BIG_LINES);
 
-  /* "src/lxml/parser.pxi":1545
+  /* "src/lxml/parser.pxi":1556
  * 
  * # ET 1.2 compatible name
  * XMLTreeBuilder = ETCompatXMLParser             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_XMLTreeBuilder, ((PyObject *)__pyx_ptype_4lxml_5etree_ETCompatXMLParser)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_XMLTreeBuilder, ((PyObject *)__pyx_ptype_4lxml_5etree_ETCompatXMLParser)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/parser.pxi":1549
+  /* "src/lxml/parser.pxi":1560
  * 
  * cdef XMLParser __DEFAULT_XML_PARSER
  * __DEFAULT_XML_PARSER = XMLParser()             # <<<<<<<<<<<<<<
  * 
  * __GLOBAL_PARSER_CONTEXT.setDefaultParser(__DEFAULT_XML_PARSER)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XMLParser), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XMLParser), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER));
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER, ((struct __pyx_obj_4lxml_5etree_XMLParser *)__pyx_t_1));
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":1551
+  /* "src/lxml/parser.pxi":1562
  * __DEFAULT_XML_PARSER = XMLParser()
  * 
  * __GLOBAL_PARSER_CONTEXT.setDefaultParser(__DEFAULT_XML_PARSER)             # <<<<<<<<<<<<<<
@@ -217849,32 +218039,32 @@ PyMODINIT_FUNC PyInit_etree(void)
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_setDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_1));
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":1553
+  /* "src/lxml/parser.pxi":1564
  * __GLOBAL_PARSER_CONTEXT.setDefaultParser(__DEFAULT_XML_PARSER)
  * 
  * def set_default_parser(_BaseParser parser=None):             # <<<<<<<<<<<<<<
  *     u"""set_default_parser(parser=None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_43set_default_parser, 0, __pyx_n_s_set_default_parser, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__199)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_43set_default_parser, 0, __pyx_n_s_set_default_parser, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__200)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__200);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_parser, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__201);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_parser, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":1569
+  /* "src/lxml/parser.pxi":1580
  *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)
  * 
  * def get_default_parser():             # <<<<<<<<<<<<<<
  *     u"get_default_parser()"
  *     return __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_45get_default_parser, 0, __pyx_n_s_get_default_parser, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__201)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_45get_default_parser, 0, __pyx_n_s_get_default_parser, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__202)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_default_parser, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_default_parser, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":1580
+  /* "src/lxml/parser.pxi":1591
  * _HTML_DEFAULT_PARSE_OPTIONS = (
  *     htmlparser.HTML_PARSE_RECOVER |
  *     htmlparser.HTML_PARSE_NONET   |             # <<<<<<<<<<<<<<
@@ -217883,14 +218073,14 @@ PyMODINIT_FUNC PyInit_etree(void)
  */
   __pyx_v_4lxml_5etree__HTML_DEFAULT_PARSE_OPTIONS = ((HTML_PARSE_RECOVER | HTML_PARSE_NONET) | HTML_PARSE_COMPACT);
 
-  /* "src/lxml/parser.pxi":1637
+  /* "src/lxml/parser.pxi":1648
  * 
  * cdef HTMLParser __DEFAULT_HTML_PARSER
  * __DEFAULT_HTML_PARSER = HTMLParser()             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_HTMLParser), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_HTMLParser), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_HTML_PARSER));
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___DEFAULT_HTML_PARSER, ((struct __pyx_obj_4lxml_5etree_HTMLParser *)__pyx_t_1));
@@ -217904,10 +218094,10 @@ PyMODINIT_FUNC PyInit_etree(void)
  * 
  * 
  */
-  __Pyx_INCREF(__pyx_tuple__202);
+  __Pyx_INCREF(__pyx_tuple__203);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree_NS_END_EVENT);
-  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree_NS_END_EVENT, __pyx_tuple__202);
-  __Pyx_GIVEREF(__pyx_tuple__202);
+  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree_NS_END_EVENT, __pyx_tuple__203);
+  __Pyx_GIVEREF(__pyx_tuple__203);
 
   /* "src/lxml/parsertarget.pxi":4
  * 
@@ -218056,7 +218246,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *         self.result = result
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_19_TargetParserResult_1__init__, 0, __pyx_n_s_TargetParserResult___init, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__204)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_19_TargetParserResult_1__init__, 0, __pyx_n_s_TargetParserResult___init, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__205)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   if (PyObject_SetItem(__pyx_t_8, __pyx_n_s_init, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -218136,9 +218326,9 @@ PyMODINIT_FUNC PyInit_etree(void)
   __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_47XMLID, 0, __pyx_n_s_XMLID, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__206)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_47XMLID, 0, __pyx_n_s_XMLID, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__207)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__207);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__208);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_6);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_XMLID, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -218154,9 +218344,9 @@ PyMODINIT_FUNC PyInit_etree(void)
   __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_49XMLDTDID, 0, __pyx_n_s_XMLDTDID, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__209)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_49XMLDTDID, 0, __pyx_n_s_XMLDTDID, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__210)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__210);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__211);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_6, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_XMLDTDID, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -218172,9 +218362,9 @@ PyMODINIT_FUNC PyInit_etree(void)
   __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_51parseid, 0, __pyx_n_s_parseid, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__212)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_51parseid, 0, __pyx_n_s_parseid, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__213)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__213);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__214);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_6);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_parseid, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -218213,9 +218403,9 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     u"""cleanup_namespaces(tree_or_element, top_nsmap=None, keep_ns_prefixes=None)
  * 
  */
-  __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_53cleanup_namespaces, 0, __pyx_n_s_cleanup_namespaces, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__215)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_53cleanup_namespaces, 0, __pyx_n_s_cleanup_namespaces, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__216)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__216);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__217);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_cleanup_namespaces, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
@@ -218226,7 +218416,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     u"""strip_attributes(tree_or_element, *attribute_names)
  * 
  */
-  __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_55strip_attributes, 0, __pyx_n_s_strip_attributes, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__218)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_55strip_attributes, 0, __pyx_n_s_strip_attributes, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__219)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_strip_attributes, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -218244,7 +218434,7 @@ PyMODINIT_FUNC PyInit_etree(void)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_with_tail, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_57strip_elements, 0, __pyx_n_s_strip_elements, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__220)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_57strip_elements, 0, __pyx_n_s_strip_elements, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__221)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_6);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -218258,7 +218448,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     u"""strip_tags(tree_or_element, *tag_names)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_59strip_tags, 0, __pyx_n_s_strip_tags, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__222)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_59strip_tags, 0, __pyx_n_s_strip_tags, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__223)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_strip_tags, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -218374,10 +218564,10 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     b"Number encoding",
  *     b"Unfinished literal",
  */
-  __Pyx_INCREF(__pyx_tuple__223);
+  __Pyx_INCREF(__pyx_tuple__224);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree_LIBXML2_XPATH_ERROR_MESSAGES);
-  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree_LIBXML2_XPATH_ERROR_MESSAGES, __pyx_tuple__223);
-  __Pyx_GIVEREF(__pyx_tuple__223);
+  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree_LIBXML2_XPATH_ERROR_MESSAGES, __pyx_tuple__224);
+  __Pyx_GIVEREF(__pyx_tuple__224);
 
   /* "src/lxml/extensions.pxi":428
  * 
@@ -218389,9 +218579,9 @@ PyMODINIT_FUNC PyInit_etree(void)
   __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ns, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_61Extension, 0, __pyx_n_s_Extension, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__225)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_61Extension, 0, __pyx_n_s_Extension, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__226)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__226);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__227);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_6, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_Extension, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -218431,7 +218621,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *             return self._parent
  * 
  */
-    __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23_PyElementUnicodeResult_1getparent, 0, __pyx_n_s_PyElementUnicodeResult_getparen, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__228)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23_PyElementUnicodeResult_1getparent, 0, __pyx_n_s_PyElementUnicodeResult_getparen, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__229)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (PyObject_SetItem(__pyx_t_8, __pyx_n_s_getparent, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -218486,7 +218676,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *         return self._parent
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20_ElementStringResult_1getparent, 0, __pyx_n_s_ElementStringResult_getparent, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__230)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20_ElementStringResult_1getparent, 0, __pyx_n_s_ElementStringResult_getparent, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__231)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   if (PyObject_SetItem(__pyx_t_8, __pyx_n_s_getparent, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -218760,7 +218950,7 @@ PyMODINIT_FUNC PyInit_etree(void)
   if (PyDict_SetItem(__pyx_t_16, __pyx_n_s_extensions, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (PyDict_SetItem(__pyx_t_16, __pyx_n_s_regexp, ((PyObject *)Py_True)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (PyDict_SetItem(__pyx_t_16, __pyx_n_s_smart_strings, ((PyObject *)Py_True)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_63XPathEvaluator, 0, __pyx_n_s_XPathEvaluator, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__232)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_63XPathEvaluator, 0, __pyx_n_s_XPathEvaluator, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__233)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_15);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_15, __pyx_t_16);
   __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
@@ -218776,7 +218966,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  */
   __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_15);
-  __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_tuple__234, NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_tuple__235, NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_16);
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
   __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_sub); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -218796,7 +218986,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  */
   __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_15);
-  __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_tuple__236, NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_tuple__237, NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_16);
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
   __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_findall); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -219074,7 +219264,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *         u"""strparam(strval)
  * 
  */
-  __pyx_t_16 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_7strparam, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT_strparam, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__238)); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_16 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_7strparam, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT_strparam, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__239)); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_16);
 
   /* "src/lxml/xslt.pxi":434
@@ -219132,7 +219322,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *         u"""set_global_max_depth(max_depth)
  * 
  */
-  __pyx_t_16 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_9set_global_max_depth, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT_set_global_max_depth, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__240)); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_16 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_9set_global_max_depth, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT_set_global_max_depth, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__241)); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_16);
 
   /* "src/lxml/xslt.pxi":448
@@ -219210,7 +219400,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  */
   __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_16);
-  __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_tuple__241, NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_tuple__242, NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_15);
   __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree__RE_PI_HREF);
@@ -219669,7 +219859,7 @@ PyMODINIT_FUNC PyInit_etree(void)
  *     u"boolean(//xs:attribute[@default or @fixed][1])",
  *     namespaces={u'xs': u'http://www.w3.org/2001/XMLSchema'})
  */
-  __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPath), __pyx_tuple__242, __pyx_t_16); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPath), __pyx_tuple__243, __pyx_t_16); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
   __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_5etree__check_for_default_attributes));
@@ -219855,17 +220045,17 @@ static void __Pyx_CleanupGlobals(void) {
   Py_CLEAR(__pyx_tuple__62);
   Py_CLEAR(__pyx_tuple__63);
   Py_CLEAR(__pyx_tuple__64);
-  Py_CLEAR(__pyx_tuple__70);
+  Py_CLEAR(__pyx_tuple__65);
   Py_CLEAR(__pyx_tuple__71);
   Py_CLEAR(__pyx_tuple__72);
   Py_CLEAR(__pyx_tuple__73);
   Py_CLEAR(__pyx_tuple__74);
-  Py_CLEAR(__pyx_tuple__78);
-  Py_CLEAR(__pyx_slice__79);
+  Py_CLEAR(__pyx_tuple__75);
+  Py_CLEAR(__pyx_tuple__79);
   Py_CLEAR(__pyx_slice__80);
-  Py_CLEAR(__pyx_tuple__81);
-  Py_CLEAR(__pyx_slice__82);
-  Py_CLEAR(__pyx_tuple__84);
+  Py_CLEAR(__pyx_slice__81);
+  Py_CLEAR(__pyx_tuple__82);
+  Py_CLEAR(__pyx_slice__83);
   Py_CLEAR(__pyx_tuple__85);
   Py_CLEAR(__pyx_tuple__86);
   Py_CLEAR(__pyx_tuple__87);
@@ -219878,14 +220068,14 @@ static void __Pyx_CleanupGlobals(void) {
   Py_CLEAR(__pyx_tuple__94);
   Py_CLEAR(__pyx_tuple__95);
   Py_CLEAR(__pyx_tuple__96);
-  Py_CLEAR(__pyx_slice__97);
+  Py_CLEAR(__pyx_tuple__97);
   Py_CLEAR(__pyx_slice__98);
-  Py_CLEAR(__pyx_tuple__99);
+  Py_CLEAR(__pyx_slice__99);
   Py_CLEAR(__pyx_tuple__100);
   Py_CLEAR(__pyx_tuple__101);
-  Py_CLEAR(__pyx_slice__102);
-  Py_CLEAR(__pyx_tuple__103);
-  Py_CLEAR(__pyx_tuple__105);
+  Py_CLEAR(__pyx_tuple__102);
+  Py_CLEAR(__pyx_slice__103);
+  Py_CLEAR(__pyx_tuple__104);
   Py_CLEAR(__pyx_tuple__106);
   Py_CLEAR(__pyx_tuple__107);
   Py_CLEAR(__pyx_tuple__108);
@@ -219901,126 +220091,127 @@ static void __Pyx_CleanupGlobals(void) {
   Py_CLEAR(__pyx_tuple__118);
   Py_CLEAR(__pyx_tuple__119);
   Py_CLEAR(__pyx_tuple__120);
-  Py_CLEAR(__pyx_codeobj__121);
-  Py_CLEAR(__pyx_tuple__122);
-  Py_CLEAR(__pyx_codeobj__123);
-  Py_CLEAR(__pyx_tuple__124);
-  Py_CLEAR(__pyx_codeobj__125);
-  Py_CLEAR(__pyx_tuple__126);
-  Py_CLEAR(__pyx_codeobj__127);
-  Py_CLEAR(__pyx_tuple__128);
-  Py_CLEAR(__pyx_codeobj__129);
-  Py_CLEAR(__pyx_tuple__130);
-  Py_CLEAR(__pyx_codeobj__131);
-  Py_CLEAR(__pyx_tuple__132);
+  Py_CLEAR(__pyx_tuple__121);
+  Py_CLEAR(__pyx_codeobj__122);
+  Py_CLEAR(__pyx_tuple__123);
+  Py_CLEAR(__pyx_codeobj__124);
+  Py_CLEAR(__pyx_tuple__125);
+  Py_CLEAR(__pyx_codeobj__126);
+  Py_CLEAR(__pyx_tuple__127);
+  Py_CLEAR(__pyx_codeobj__128);
+  Py_CLEAR(__pyx_tuple__129);
+  Py_CLEAR(__pyx_codeobj__130);
+  Py_CLEAR(__pyx_tuple__131);
+  Py_CLEAR(__pyx_codeobj__132);
   Py_CLEAR(__pyx_tuple__133);
   Py_CLEAR(__pyx_tuple__134);
-  Py_CLEAR(__pyx_codeobj__135);
-  Py_CLEAR(__pyx_tuple__136);
-  Py_CLEAR(__pyx_codeobj__137);
-  Py_CLEAR(__pyx_tuple__138);
+  Py_CLEAR(__pyx_tuple__135);
+  Py_CLEAR(__pyx_codeobj__136);
+  Py_CLEAR(__pyx_tuple__137);
+  Py_CLEAR(__pyx_codeobj__138);
   Py_CLEAR(__pyx_tuple__139);
-  Py_CLEAR(__pyx_codeobj__140);
-  Py_CLEAR(__pyx_tuple__141);
+  Py_CLEAR(__pyx_tuple__140);
+  Py_CLEAR(__pyx_codeobj__141);
   Py_CLEAR(__pyx_tuple__142);
-  Py_CLEAR(__pyx_codeobj__143);
-  Py_CLEAR(__pyx_tuple__144);
+  Py_CLEAR(__pyx_tuple__143);
+  Py_CLEAR(__pyx_codeobj__144);
   Py_CLEAR(__pyx_tuple__145);
   Py_CLEAR(__pyx_tuple__146);
   Py_CLEAR(__pyx_tuple__147);
   Py_CLEAR(__pyx_tuple__148);
   Py_CLEAR(__pyx_tuple__149);
-  Py_CLEAR(__pyx_codeobj__150);
-  Py_CLEAR(__pyx_tuple__151);
+  Py_CLEAR(__pyx_tuple__150);
+  Py_CLEAR(__pyx_codeobj__151);
   Py_CLEAR(__pyx_tuple__152);
-  Py_CLEAR(__pyx_codeobj__153);
-  Py_CLEAR(__pyx_tuple__154);
+  Py_CLEAR(__pyx_tuple__153);
+  Py_CLEAR(__pyx_codeobj__154);
   Py_CLEAR(__pyx_tuple__155);
-  Py_CLEAR(__pyx_codeobj__156);
-  Py_CLEAR(__pyx_tuple__157);
+  Py_CLEAR(__pyx_tuple__156);
+  Py_CLEAR(__pyx_codeobj__157);
   Py_CLEAR(__pyx_tuple__158);
-  Py_CLEAR(__pyx_codeobj__159);
-  Py_CLEAR(__pyx_tuple__160);
-  Py_CLEAR(__pyx_codeobj__161);
-  Py_CLEAR(__pyx_tuple__162);
+  Py_CLEAR(__pyx_tuple__159);
+  Py_CLEAR(__pyx_codeobj__160);
+  Py_CLEAR(__pyx_tuple__161);
+  Py_CLEAR(__pyx_codeobj__162);
   Py_CLEAR(__pyx_tuple__163);
-  Py_CLEAR(__pyx_codeobj__164);
-  Py_CLEAR(__pyx_tuple__165);
+  Py_CLEAR(__pyx_tuple__164);
+  Py_CLEAR(__pyx_codeobj__165);
   Py_CLEAR(__pyx_tuple__166);
-  Py_CLEAR(__pyx_codeobj__167);
-  Py_CLEAR(__pyx_tuple__168);
+  Py_CLEAR(__pyx_tuple__167);
+  Py_CLEAR(__pyx_codeobj__168);
   Py_CLEAR(__pyx_tuple__169);
-  Py_CLEAR(__pyx_codeobj__170);
-  Py_CLEAR(__pyx_tuple__171);
+  Py_CLEAR(__pyx_tuple__170);
+  Py_CLEAR(__pyx_codeobj__171);
   Py_CLEAR(__pyx_tuple__172);
-  Py_CLEAR(__pyx_codeobj__173);
-  Py_CLEAR(__pyx_tuple__174);
+  Py_CLEAR(__pyx_tuple__173);
+  Py_CLEAR(__pyx_codeobj__174);
   Py_CLEAR(__pyx_tuple__175);
-  Py_CLEAR(__pyx_codeobj__176);
-  Py_CLEAR(__pyx_tuple__177);
+  Py_CLEAR(__pyx_tuple__176);
+  Py_CLEAR(__pyx_codeobj__177);
   Py_CLEAR(__pyx_tuple__178);
-  Py_CLEAR(__pyx_codeobj__179);
-  Py_CLEAR(__pyx_tuple__180);
-  Py_CLEAR(__pyx_codeobj__181);
-  Py_CLEAR(__pyx_tuple__182);
-  Py_CLEAR(__pyx_codeobj__183);
-  Py_CLEAR(__pyx_tuple__184);
-  Py_CLEAR(__pyx_codeobj__185);
-  Py_CLEAR(__pyx_tuple__186);
-  Py_CLEAR(__pyx_codeobj__187);
-  Py_CLEAR(__pyx_tuple__188);
-  Py_CLEAR(__pyx_codeobj__189);
-  Py_CLEAR(__pyx_tuple__190);
+  Py_CLEAR(__pyx_tuple__179);
+  Py_CLEAR(__pyx_codeobj__180);
+  Py_CLEAR(__pyx_tuple__181);
+  Py_CLEAR(__pyx_codeobj__182);
+  Py_CLEAR(__pyx_tuple__183);
+  Py_CLEAR(__pyx_codeobj__184);
+  Py_CLEAR(__pyx_tuple__185);
+  Py_CLEAR(__pyx_codeobj__186);
+  Py_CLEAR(__pyx_tuple__187);
+  Py_CLEAR(__pyx_codeobj__188);
+  Py_CLEAR(__pyx_tuple__189);
+  Py_CLEAR(__pyx_codeobj__190);
   Py_CLEAR(__pyx_tuple__191);
-  Py_CLEAR(__pyx_codeobj__192);
-  Py_CLEAR(__pyx_tuple__193);
+  Py_CLEAR(__pyx_tuple__192);
+  Py_CLEAR(__pyx_codeobj__193);
   Py_CLEAR(__pyx_tuple__194);
-  Py_CLEAR(__pyx_codeobj__195);
-  Py_CLEAR(__pyx_tuple__196);
-  Py_CLEAR(__pyx_codeobj__197);
-  Py_CLEAR(__pyx_tuple__198);
-  Py_CLEAR(__pyx_codeobj__199);
-  Py_CLEAR(__pyx_tuple__200);
-  Py_CLEAR(__pyx_codeobj__201);
-  Py_CLEAR(__pyx_tuple__202);
+  Py_CLEAR(__pyx_tuple__195);
+  Py_CLEAR(__pyx_codeobj__196);
+  Py_CLEAR(__pyx_tuple__197);
+  Py_CLEAR(__pyx_codeobj__198);
+  Py_CLEAR(__pyx_tuple__199);
+  Py_CLEAR(__pyx_codeobj__200);
+  Py_CLEAR(__pyx_tuple__201);
+  Py_CLEAR(__pyx_codeobj__202);
   Py_CLEAR(__pyx_tuple__203);
-  Py_CLEAR(__pyx_codeobj__204);
-  Py_CLEAR(__pyx_tuple__205);
-  Py_CLEAR(__pyx_codeobj__206);
-  Py_CLEAR(__pyx_tuple__207);
+  Py_CLEAR(__pyx_tuple__204);
+  Py_CLEAR(__pyx_codeobj__205);
+  Py_CLEAR(__pyx_tuple__206);
+  Py_CLEAR(__pyx_codeobj__207);
   Py_CLEAR(__pyx_tuple__208);
-  Py_CLEAR(__pyx_codeobj__209);
-  Py_CLEAR(__pyx_tuple__210);
+  Py_CLEAR(__pyx_tuple__209);
+  Py_CLEAR(__pyx_codeobj__210);
   Py_CLEAR(__pyx_tuple__211);
-  Py_CLEAR(__pyx_codeobj__212);
-  Py_CLEAR(__pyx_tuple__213);
+  Py_CLEAR(__pyx_tuple__212);
+  Py_CLEAR(__pyx_codeobj__213);
   Py_CLEAR(__pyx_tuple__214);
-  Py_CLEAR(__pyx_codeobj__215);
-  Py_CLEAR(__pyx_tuple__216);
+  Py_CLEAR(__pyx_tuple__215);
+  Py_CLEAR(__pyx_codeobj__216);
   Py_CLEAR(__pyx_tuple__217);
-  Py_CLEAR(__pyx_codeobj__218);
-  Py_CLEAR(__pyx_tuple__219);
-  Py_CLEAR(__pyx_codeobj__220);
-  Py_CLEAR(__pyx_tuple__221);
-  Py_CLEAR(__pyx_codeobj__222);
-  Py_CLEAR(__pyx_tuple__223);
+  Py_CLEAR(__pyx_tuple__218);
+  Py_CLEAR(__pyx_codeobj__219);
+  Py_CLEAR(__pyx_tuple__220);
+  Py_CLEAR(__pyx_codeobj__221);
+  Py_CLEAR(__pyx_tuple__222);
+  Py_CLEAR(__pyx_codeobj__223);
   Py_CLEAR(__pyx_tuple__224);
-  Py_CLEAR(__pyx_codeobj__225);
-  Py_CLEAR(__pyx_tuple__226);
+  Py_CLEAR(__pyx_tuple__225);
+  Py_CLEAR(__pyx_codeobj__226);
   Py_CLEAR(__pyx_tuple__227);
-  Py_CLEAR(__pyx_codeobj__228);
-  Py_CLEAR(__pyx_tuple__229);
-  Py_CLEAR(__pyx_codeobj__230);
-  Py_CLEAR(__pyx_tuple__231);
-  Py_CLEAR(__pyx_codeobj__232);
-  Py_CLEAR(__pyx_tuple__234);
-  Py_CLEAR(__pyx_tuple__236);
+  Py_CLEAR(__pyx_tuple__228);
+  Py_CLEAR(__pyx_codeobj__229);
+  Py_CLEAR(__pyx_tuple__230);
+  Py_CLEAR(__pyx_codeobj__231);
+  Py_CLEAR(__pyx_tuple__232);
+  Py_CLEAR(__pyx_codeobj__233);
+  Py_CLEAR(__pyx_tuple__235);
   Py_CLEAR(__pyx_tuple__237);
-  Py_CLEAR(__pyx_codeobj__238);
-  Py_CLEAR(__pyx_tuple__239);
-  Py_CLEAR(__pyx_codeobj__240);
-  Py_CLEAR(__pyx_tuple__241);
+  Py_CLEAR(__pyx_tuple__238);
+  Py_CLEAR(__pyx_codeobj__239);
+  Py_CLEAR(__pyx_tuple__240);
+  Py_CLEAR(__pyx_codeobj__241);
   Py_CLEAR(__pyx_tuple__242);
+  Py_CLEAR(__pyx_tuple__243);
   if (__pyx_code_cache.entries) {
       __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
       int i, count = __pyx_code_cache.count;
@@ -223304,7 +223495,7 @@ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
             const digit* digits = ((PyLongObject*)x)->ob_digit;
             switch (Py_SIZE(x)) {
                 case  0: return (int) 0;
-                case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, -(sdigit) digits[0])
+                case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
                 case  1: __PYX_VERIFY_RETURN_INT(int,  digit, +digits[0])
                 case -2:
                     if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
@@ -223681,7 +223872,7 @@ static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
             const digit* digits = ((PyLongObject*)x)->ob_digit;
             switch (Py_SIZE(x)) {
                 case  0: return (size_t) 0;
-                case -1: __PYX_VERIFY_RETURN_INT(size_t, sdigit, -(sdigit) digits[0])
+                case -1: __PYX_VERIFY_RETURN_INT(size_t, sdigit, (sdigit) (-(sdigit)digits[0]))
                 case  1: __PYX_VERIFY_RETURN_INT(size_t,  digit, +digits[0])
                 case -2:
                     if (8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT) {
@@ -223865,7 +224056,7 @@ static CYTHON_INLINE signed char __Pyx_PyInt_As_signed__char(PyObject *x) {
             const digit* digits = ((PyLongObject*)x)->ob_digit;
             switch (Py_SIZE(x)) {
                 case  0: return (signed char) 0;
-                case -1: __PYX_VERIFY_RETURN_INT(signed char, sdigit, -(sdigit) digits[0])
+                case -1: __PYX_VERIFY_RETURN_INT(signed char, sdigit, (sdigit) (-(sdigit)digits[0]))
                 case  1: __PYX_VERIFY_RETURN_INT(signed char,  digit, +digits[0])
                 case -2:
                     if (8 * sizeof(signed char) - 1 > 1 * PyLong_SHIFT) {
@@ -224111,7 +224302,7 @@ static CYTHON_INLINE unsigned short __Pyx_PyInt_As_unsigned_short(PyObject *x) {
             const digit* digits = ((PyLongObject*)x)->ob_digit;
             switch (Py_SIZE(x)) {
                 case  0: return (unsigned short) 0;
-                case -1: __PYX_VERIFY_RETURN_INT(unsigned short, sdigit, -(sdigit) digits[0])
+                case -1: __PYX_VERIFY_RETURN_INT(unsigned short, sdigit, (sdigit) (-(sdigit)digits[0]))
                 case  1: __PYX_VERIFY_RETURN_INT(unsigned short,  digit, +digits[0])
                 case -2:
                     if (8 * sizeof(unsigned short) - 1 > 1 * PyLong_SHIFT) {
@@ -224347,7 +224538,7 @@ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
             const digit* digits = ((PyLongObject*)x)->ob_digit;
             switch (Py_SIZE(x)) {
                 case  0: return (long) 0;
-                case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, -(sdigit) digits[0])
+                case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
                 case  1: __PYX_VERIFY_RETURN_INT(long,  digit, +digits[0])
                 case -2:
                     if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
@@ -224728,7 +224919,7 @@ static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) {
         #endif
         {
             if (value == Py_None)
-                ret = PyIter_Next(yf);
+                ret = Py_TYPE(yf)->tp_iternext(yf);
             else
                 ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value);
         }
index efeeada2541499bddabe6b523fc3db6d20928f83..3c748225e4b207235319c20cf780d0bfd9bed80c 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.23.4 */
+/* Generated by Cython 0.23.5 */
 
 #ifndef __PYX_HAVE__lxml__etree
 #define __PYX_HAVE__lxml__etree
index 48e7c05afb2054cd9e6cca6d5c23b8678b2bb109..eff64f6be2750f2c1120c627e0991dcd15b6d3df 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.23.4 */
+/* Generated by Cython 0.23.5 */
 
 #ifndef __PYX_HAVE_API__lxml__etree
 #define __PYX_HAVE_API__lxml__etree
index 5ecba1a96902d814d65a0a86031503d28572e264..3f54f37f32de81263d975f1d58ef5bcc6339d6e5 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.23.4 */
+/* Generated by Cython 0.23.5 */
 
 /* BEGIN: Cython Metadata
 {
@@ -61,7 +61,7 @@ END: Cython Metadata */
 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000)
     #error Cython requires Python 2.6+ or Python 3.2+.
 #else
-#define CYTHON_ABI "0_23_4"
+#define CYTHON_ABI "0_23_5"
 #include <stddef.h>
 #ifndef offsetof
 #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
@@ -680,7 +680,7 @@ struct __pyx_obj_4lxml_9objectify_PyType {
 };
 
 
-/* "src/lxml/lxml.objectify.pyx":1122
+/* "src/lxml/lxml.objectify.pyx":1125
  * @cython.final
  * @cython.internal
  * cdef class _ObjectifyElementMakerCaller:             # <<<<<<<<<<<<<<
@@ -696,7 +696,7 @@ struct __pyx_obj_4lxml_9objectify__ObjectifyElementMakerCaller {
 };
 
 
-/* "src/lxml/lxml.objectify.pyx":1212
+/* "src/lxml/lxml.objectify.pyx":1215
  *         cetree.setNodeText(elem._c_node, text)
  * 
  * cdef class ElementMaker:             # <<<<<<<<<<<<<<
@@ -714,7 +714,7 @@ struct __pyx_obj_4lxml_9objectify_ElementMaker {
 };
 
 
-/* "src/lxml/lxml.objectify.pyx":1370
+/* "src/lxml/lxml.objectify.pyx":1373
  * # Element class lookup
  * 
  * cdef class ObjectifyElementClassLookup(ElementClassLookup):             # <<<<<<<<<<<<<<
@@ -746,7 +746,7 @@ struct __pyx_obj_4lxml_9objectify_ObjectPath {
 
 
 
-/* "src/lxml/lxml.objectify.pyx":1212
+/* "src/lxml/lxml.objectify.pyx":1215
  *         cetree.setNodeText(elem._c_node, text)
  * 
  * cdef class ElementMaker:             # <<<<<<<<<<<<<<
@@ -1376,6 +1376,7 @@ static char __pyx_k__9[] = "{";
   static char __pyx_k_none[] = "none";
   static char __pyx_k_path[] = "path";
   static char __pyx_k_py_2[] = "py";
+  static char __pyx_k_repr[] = "repr";
   static char __pyx_k_root[] = "root";
   static char __pyx_k_tail[] = "tail";
   static char __pyx_k_temp[] = "temp";
@@ -1769,6 +1770,7 @@ static PyObject *__pyx_n_s_register;
 static PyObject *__pyx_n_s_remove;
 static PyObject *__pyx_n_s_remove_blank_text;
 static PyObject *__pyx_n_s_replace;
+static PyObject *__pyx_n_s_repr;
 static PyObject *__pyx_n_s_root;
 static PyObject *__pyx_kp_u_root_element_does_not_match_need;
 static PyObject *__pyx_kp_u_s;
@@ -14072,7 +14074,7 @@ static PyObject *__pyx_f_4lxml_9objectify__richcmpPyvals(PyObject *__pyx_v_left,
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":917
+/* "src/lxml/lxml.objectify.pyx":920
  *     cdef object _type
  *     cdef list _schema_types
  *     def __init__(self, name, type_check, type_class, stringify=None):             # <<<<<<<<<<<<<<
@@ -14116,12 +14118,12 @@ static int __pyx_pw_4lxml_9objectify_6PyType_1__init__(PyObject *__pyx_v_self, P
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_type_check)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_type_class)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (kw_args > 0) {
@@ -14130,7 +14132,7 @@ static int __pyx_pw_4lxml_9objectify_6PyType_1__init__(PyObject *__pyx_v_self, P
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __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[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -14149,7 +14151,7 @@ static int __pyx_pw_4lxml_9objectify_6PyType_1__init__(PyObject *__pyx_v_self, P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.PyType.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -14176,7 +14178,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __Pyx_INCREF(__pyx_v_name);
   __Pyx_INCREF(__pyx_v_stringify);
 
-  /* "src/lxml/lxml.objectify.pyx":918
+  /* "src/lxml/lxml.objectify.pyx":921
  *     cdef list _schema_types
  *     def __init__(self, name, type_check, type_class, stringify=None):
  *         if isinstance(name, bytes):             # <<<<<<<<<<<<<<
@@ -14187,7 +14189,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":919
+    /* "src/lxml/lxml.objectify.pyx":922
  *     def __init__(self, name, type_check, type_class, stringify=None):
  *         if isinstance(name, bytes):
  *             name = (<bytes>name).decode('ascii')             # <<<<<<<<<<<<<<
@@ -14196,14 +14198,14 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  */
     if (unlikely(__pyx_v_name == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
-    __pyx_t_3 = __Pyx_decode_bytes(((PyObject*)__pyx_v_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_decode_bytes(((PyObject*)__pyx_v_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":918
+    /* "src/lxml/lxml.objectify.pyx":921
  *     cdef list _schema_types
  *     def __init__(self, name, type_check, type_class, stringify=None):
  *         if isinstance(name, bytes):             # <<<<<<<<<<<<<<
@@ -14213,7 +14215,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
     goto __pyx_L3;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":920
+  /* "src/lxml/lxml.objectify.pyx":923
  *         if isinstance(name, bytes):
  *             name = (<bytes>name).decode('ascii')
  *         elif not isinstance(name, unicode):             # <<<<<<<<<<<<<<
@@ -14224,7 +14226,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/lxml.objectify.pyx":921
+    /* "src/lxml/lxml.objectify.pyx":924
  *             name = (<bytes>name).decode('ascii')
  *         elif not isinstance(name, unicode):
  *             raise TypeError, u"Type name must be a string"             # <<<<<<<<<<<<<<
@@ -14232,9 +14234,9 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *             raise TypeError, u"Type check function must be callable (or None)"
  */
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Type_name_must_be_a_string, 0, 0);
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/lxml.objectify.pyx":920
+    /* "src/lxml/lxml.objectify.pyx":923
  *         if isinstance(name, bytes):
  *             name = (<bytes>name).decode('ascii')
  *         elif not isinstance(name, unicode):             # <<<<<<<<<<<<<<
@@ -14244,7 +14246,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   }
   __pyx_L3:;
 
-  /* "src/lxml/lxml.objectify.pyx":922
+  /* "src/lxml/lxml.objectify.pyx":925
  *         elif not isinstance(name, unicode):
  *             raise TypeError, u"Type name must be a string"
  *         if type_check is not None and not callable(type_check):             # <<<<<<<<<<<<<<
@@ -14258,13 +14260,13 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
     __pyx_t_1 = __pyx_t_4;
     goto __pyx_L5_bool_binop_done;
   }
-  __pyx_t_4 = __Pyx_PyCallable_Check(__pyx_v_type_check); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyCallable_Check(__pyx_v_type_check); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = ((!(__pyx_t_4 != 0)) != 0);
   __pyx_t_1 = __pyx_t_2;
   __pyx_L5_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/lxml.objectify.pyx":923
+    /* "src/lxml/lxml.objectify.pyx":926
  *             raise TypeError, u"Type name must be a string"
  *         if type_check is not None and not callable(type_check):
  *             raise TypeError, u"Type check function must be callable (or None)"             # <<<<<<<<<<<<<<
@@ -14272,9 +14274,9 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *                not issubclass(type_class, ObjectifiedDataElement):
  */
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Type_check_function_must_be_call, 0, 0);
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/lxml.objectify.pyx":922
+    /* "src/lxml/lxml.objectify.pyx":925
  *         elif not isinstance(name, unicode):
  *             raise TypeError, u"Type name must be a string"
  *         if type_check is not None and not callable(type_check):             # <<<<<<<<<<<<<<
@@ -14283,33 +14285,33 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":924
+  /* "src/lxml/lxml.objectify.pyx":927
  *         if type_check is not None and not callable(type_check):
  *             raise TypeError, u"Type check function must be callable (or None)"
  *         if name != TREE_PYTYPE_NAME and \             # <<<<<<<<<<<<<<
  *                not issubclass(type_class, ObjectifiedDataElement):
  *             raise TypeError, \
  */
-  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_2) {
   } else {
     __pyx_t_1 = __pyx_t_2;
     goto __pyx_L8_bool_binop_done;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":925
+  /* "src/lxml/lxml.objectify.pyx":928
  *             raise TypeError, u"Type check function must be callable (or None)"
  *         if name != TREE_PYTYPE_NAME and \
  *                not issubclass(type_class, ObjectifiedDataElement):             # <<<<<<<<<<<<<<
  *             raise TypeError, \
  *                 u"Data classes must inherit from ObjectifiedDataElement"
  */
-  __pyx_t_2 = PyObject_IsSubclass(__pyx_v_type_class, ((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedDataElement)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_IsSubclass(__pyx_v_type_class, ((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedDataElement)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_4 = ((!(__pyx_t_2 != 0)) != 0);
   __pyx_t_1 = __pyx_t_4;
   __pyx_L8_bool_binop_done:;
 
-  /* "src/lxml/lxml.objectify.pyx":924
+  /* "src/lxml/lxml.objectify.pyx":927
  *         if type_check is not None and not callable(type_check):
  *             raise TypeError, u"Type check function must be callable (or None)"
  *         if name != TREE_PYTYPE_NAME and \             # <<<<<<<<<<<<<<
@@ -14318,7 +14320,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  */
   if (__pyx_t_1) {
 
-    /* "src/lxml/lxml.objectify.pyx":926
+    /* "src/lxml/lxml.objectify.pyx":929
  *         if name != TREE_PYTYPE_NAME and \
  *                not issubclass(type_class, ObjectifiedDataElement):
  *             raise TypeError, \             # <<<<<<<<<<<<<<
@@ -14326,9 +14328,9 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *         self.name  = name
  */
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Data_classes_must_inherit_from_O, 0, 0);
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/lxml.objectify.pyx":924
+    /* "src/lxml/lxml.objectify.pyx":927
  *         if type_check is not None and not callable(type_check):
  *             raise TypeError, u"Type check function must be callable (or None)"
  *         if name != TREE_PYTYPE_NAME and \             # <<<<<<<<<<<<<<
@@ -14337,7 +14339,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":928
+  /* "src/lxml/lxml.objectify.pyx":931
  *             raise TypeError, \
  *                 u"Data classes must inherit from ObjectifiedDataElement"
  *         self.name  = name             # <<<<<<<<<<<<<<
@@ -14350,7 +14352,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __Pyx_DECREF(__pyx_v_self->name);
   __pyx_v_self->name = __pyx_v_name;
 
-  /* "src/lxml/lxml.objectify.pyx":929
+  /* "src/lxml/lxml.objectify.pyx":932
  *                 u"Data classes must inherit from ObjectifiedDataElement"
  *         self.name  = name
  *         self._type = type_class             # <<<<<<<<<<<<<<
@@ -14363,7 +14365,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __Pyx_DECREF(__pyx_v_self->_type);
   __pyx_v_self->_type = __pyx_v_type_class;
 
-  /* "src/lxml/lxml.objectify.pyx":930
+  /* "src/lxml/lxml.objectify.pyx":933
  *         self.name  = name
  *         self._type = type_class
  *         self.type_check = type_check             # <<<<<<<<<<<<<<
@@ -14376,7 +14378,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __Pyx_DECREF(__pyx_v_self->type_check);
   __pyx_v_self->type_check = __pyx_v_type_check;
 
-  /* "src/lxml/lxml.objectify.pyx":931
+  /* "src/lxml/lxml.objectify.pyx":934
  *         self._type = type_class
  *         self.type_check = type_check
  *         if stringify is None:             # <<<<<<<<<<<<<<
@@ -14387,7 +14389,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __pyx_t_4 = (__pyx_t_1 != 0);
   if (__pyx_t_4) {
 
-    /* "src/lxml/lxml.objectify.pyx":932
+    /* "src/lxml/lxml.objectify.pyx":935
  *         self.type_check = type_check
  *         if stringify is None:
  *             stringify = unicode             # <<<<<<<<<<<<<<
@@ -14397,7 +14399,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
     __Pyx_INCREF(((PyObject *)(&PyUnicode_Type)));
     __Pyx_DECREF_SET(__pyx_v_stringify, ((PyObject *)(&PyUnicode_Type)));
 
-    /* "src/lxml/lxml.objectify.pyx":931
+    /* "src/lxml/lxml.objectify.pyx":934
  *         self._type = type_class
  *         self.type_check = type_check
  *         if stringify is None:             # <<<<<<<<<<<<<<
@@ -14406,7 +14408,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":933
+  /* "src/lxml/lxml.objectify.pyx":936
  *         if stringify is None:
  *             stringify = unicode
  *         self.stringify = stringify             # <<<<<<<<<<<<<<
@@ -14419,14 +14421,14 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __Pyx_DECREF(__pyx_v_self->stringify);
   __pyx_v_self->stringify = __pyx_v_stringify;
 
-  /* "src/lxml/lxml.objectify.pyx":934
+  /* "src/lxml/lxml.objectify.pyx":937
  *             stringify = unicode
  *         self.stringify = stringify
  *         self._schema_types = []             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
-  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
   __Pyx_GOTREF(__pyx_v_self->_schema_types);
@@ -14434,7 +14436,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __pyx_v_self->_schema_types = ((PyObject*)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":917
+  /* "src/lxml/lxml.objectify.pyx":920
  *     cdef object _type
  *     cdef list _schema_types
  *     def __init__(self, name, type_check, type_class, stringify=None):             # <<<<<<<<<<<<<<
@@ -14456,7 +14458,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":936
+/* "src/lxml/lxml.objectify.pyx":939
  *         self._schema_types = []
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -14487,7 +14489,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_2__repr__(struct __pyx_obj_4l
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":937
+  /* "src/lxml/lxml.objectify.pyx":940
  * 
  *     def __repr__(self):
  *         return "PyType(%s, %s)" % (self.name, self._type.__name__)             # <<<<<<<<<<<<<<
@@ -14495,9 +14497,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_2__repr__(struct __pyx_obj_4l
  *     def register(self, before=None, after=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_type, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_type, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_self->name);
   __Pyx_GIVEREF(__pyx_v_self->name);
@@ -14505,14 +14507,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_2__repr__(struct __pyx_obj_4l
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_PyType_s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_PyType_s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":936
+  /* "src/lxml/lxml.objectify.pyx":939
  *         self._schema_types = []
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -14532,7 +14534,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_2__repr__(struct __pyx_obj_4l
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":939
+/* "src/lxml/lxml.objectify.pyx":942
  *         return "PyType(%s, %s)" % (self.name, self._type.__name__)
  * 
  *     def register(self, before=None, after=None):             # <<<<<<<<<<<<<<
@@ -14580,7 +14582,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_6PyType_5register(PyObject *__pyx_v_s
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "register") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "register") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -14595,7 +14597,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_6PyType_5register(PyObject *__pyx_v_s
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("register", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("register", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.PyType.register", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -14638,17 +14640,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
   __Pyx_INCREF(__pyx_v_before);
   __Pyx_INCREF(__pyx_v_after);
 
-  /* "src/lxml/lxml.objectify.pyx":949
+  /* "src/lxml/lxml.objectify.pyx":952
  *         ignored.  Raises ValueError if the dependencies cannot be fulfilled.
  *         """
  *         if self.name == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
  *             raise ValueError, u"Cannot register tree type"
  *         if self.type_check is not None:
  */
-  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->name, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->name, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "src/lxml/lxml.objectify.pyx":950
+    /* "src/lxml/lxml.objectify.pyx":953
  *         """
  *         if self.name == TREE_PYTYPE_NAME:
  *             raise ValueError, u"Cannot register tree type"             # <<<<<<<<<<<<<<
@@ -14656,9 +14658,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *             for item in _TYPE_CHECKS:
  */
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Cannot_register_tree_type, 0, 0);
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/lxml.objectify.pyx":949
+    /* "src/lxml/lxml.objectify.pyx":952
  *         ignored.  Raises ValueError if the dependencies cannot be fulfilled.
  *         """
  *         if self.name == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
@@ -14667,7 +14669,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":951
+  /* "src/lxml/lxml.objectify.pyx":954
  *         if self.name == TREE_PYTYPE_NAME:
  *             raise ValueError, u"Cannot register tree type"
  *         if self.type_check is not None:             # <<<<<<<<<<<<<<
@@ -14678,7 +14680,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":952
+    /* "src/lxml/lxml.objectify.pyx":955
  *             raise ValueError, u"Cannot register tree type"
  *         if self.type_check is not None:
  *             for item in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -14687,42 +14689,42 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
     if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_t_3 = __pyx_v_4lxml_9objectify__TYPE_CHECKS; __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[0]; __pyx_lineno = 952; __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[0]; __pyx_lineno = 955; __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[0]; __pyx_lineno = 952; __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[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       #endif
       __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":953
+      /* "src/lxml/lxml.objectify.pyx":956
  *         if self.type_check is not None:
  *             for item in _TYPE_CHECKS:
  *                 if item[0] is self.type_check:             # <<<<<<<<<<<<<<
  *                     _TYPE_CHECKS.remove(item)
  *                     break
  */
-      __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_2 = (__pyx_t_5 == __pyx_v_self->type_check);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/lxml.objectify.pyx":954
+        /* "src/lxml/lxml.objectify.pyx":957
  *             for item in _TYPE_CHECKS:
  *                 if item[0] is self.type_check:
  *                     _TYPE_CHECKS.remove(item)             # <<<<<<<<<<<<<<
  *                     break
  *             entry = (self.type_check, self)
  */
-        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_n_s_remove); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_n_s_remove); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_7 = NULL;
         if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -14735,23 +14737,23 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
           }
         }
         if (!__pyx_t_7) {
-          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_item); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_item); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_5);
         } else {
-          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
           __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
           __Pyx_INCREF(__pyx_v_item);
           __Pyx_GIVEREF(__pyx_v_item);
           PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_item);
-          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_5);
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         }
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":955
+        /* "src/lxml/lxml.objectify.pyx":958
  *                 if item[0] is self.type_check:
  *                     _TYPE_CHECKS.remove(item)
  *                     break             # <<<<<<<<<<<<<<
@@ -14760,7 +14762,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
         goto __pyx_L6_break;
 
-        /* "src/lxml/lxml.objectify.pyx":953
+        /* "src/lxml/lxml.objectify.pyx":956
  *         if self.type_check is not None:
  *             for item in _TYPE_CHECKS:
  *                 if item[0] is self.type_check:             # <<<<<<<<<<<<<<
@@ -14769,7 +14771,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
       }
 
-      /* "src/lxml/lxml.objectify.pyx":952
+      /* "src/lxml/lxml.objectify.pyx":955
  *             raise ValueError, u"Cannot register tree type"
  *         if self.type_check is not None:
  *             for item in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -14780,14 +14782,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
     __pyx_L6_break:;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":956
+    /* "src/lxml/lxml.objectify.pyx":959
  *                     _TYPE_CHECKS.remove(item)
  *                     break
  *             entry = (self.type_check, self)             # <<<<<<<<<<<<<<
  *             first_pos = 0
  *             last_pos = -1
  */
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_self->type_check);
     __Pyx_GIVEREF(__pyx_v_self->type_check);
@@ -14798,7 +14800,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
     __pyx_v_entry = ((PyObject*)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":957
+    /* "src/lxml/lxml.objectify.pyx":960
  *                     break
  *             entry = (self.type_check, self)
  *             first_pos = 0             # <<<<<<<<<<<<<<
@@ -14808,7 +14810,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
     __Pyx_INCREF(__pyx_int_0);
     __pyx_v_first_pos = __pyx_int_0;
 
-    /* "src/lxml/lxml.objectify.pyx":958
+    /* "src/lxml/lxml.objectify.pyx":961
  *             entry = (self.type_check, self)
  *             first_pos = 0
  *             last_pos = -1             # <<<<<<<<<<<<<<
@@ -14818,25 +14820,25 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
     __Pyx_INCREF(__pyx_int_neg_1);
     __pyx_v_last_pos = __pyx_int_neg_1;
 
-    /* "src/lxml/lxml.objectify.pyx":959
+    /* "src/lxml/lxml.objectify.pyx":962
  *             first_pos = 0
  *             last_pos = -1
  *             if before or after:             # <<<<<<<<<<<<<<
  *                 if before is None:
  *                     before = ()
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_before); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_before); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (!__pyx_t_2) {
     } else {
       __pyx_t_1 = __pyx_t_2;
       goto __pyx_L9_bool_binop_done;
     }
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_after); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_after); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_1 = __pyx_t_2;
     __pyx_L9_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "src/lxml/lxml.objectify.pyx":960
+      /* "src/lxml/lxml.objectify.pyx":963
  *             last_pos = -1
  *             if before or after:
  *                 if before is None:             # <<<<<<<<<<<<<<
@@ -14847,7 +14849,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
       __pyx_t_2 = (__pyx_t_1 != 0);
       if (__pyx_t_2) {
 
-        /* "src/lxml/lxml.objectify.pyx":961
+        /* "src/lxml/lxml.objectify.pyx":964
  *             if before or after:
  *                 if before is None:
  *                     before = ()             # <<<<<<<<<<<<<<
@@ -14857,7 +14859,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
         __Pyx_INCREF(__pyx_empty_tuple);
         __Pyx_DECREF_SET(__pyx_v_before, __pyx_empty_tuple);
 
-        /* "src/lxml/lxml.objectify.pyx":960
+        /* "src/lxml/lxml.objectify.pyx":963
  *             last_pos = -1
  *             if before or after:
  *                 if before is None:             # <<<<<<<<<<<<<<
@@ -14867,7 +14869,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
         goto __pyx_L11;
       }
 
-      /* "src/lxml/lxml.objectify.pyx":962
+      /* "src/lxml/lxml.objectify.pyx":965
  *                 if before is None:
  *                     before = ()
  *                 elif after is None:             # <<<<<<<<<<<<<<
@@ -14878,7 +14880,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/lxml.objectify.pyx":963
+        /* "src/lxml/lxml.objectify.pyx":966
  *                     before = ()
  *                 elif after is None:
  *                     after = ()             # <<<<<<<<<<<<<<
@@ -14888,7 +14890,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
         __Pyx_INCREF(__pyx_empty_tuple);
         __Pyx_DECREF_SET(__pyx_v_after, __pyx_empty_tuple);
 
-        /* "src/lxml/lxml.objectify.pyx":962
+        /* "src/lxml/lxml.objectify.pyx":965
  *                 if before is None:
  *                     before = ()
  *                 elif after is None:             # <<<<<<<<<<<<<<
@@ -14898,7 +14900,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
       }
       __pyx_L11:;
 
-      /* "src/lxml/lxml.objectify.pyx":964
+      /* "src/lxml/lxml.objectify.pyx":967
  *                 elif after is None:
  *                     after = ()
  *                 for i, (check, pytype) in enumerate(_TYPE_CHECKS):             # <<<<<<<<<<<<<<
@@ -14911,9 +14913,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
       for (;;) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         #endif
         if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
@@ -14926,7 +14928,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
           if (unlikely(size != 2)) {
             if (size > 2) __Pyx_RaiseTooManyValuesError(2);
             else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           #if CYTHON_COMPILING_IN_CPYTHON
           if (likely(PyTuple_CheckExact(sequence))) {
@@ -14939,15 +14941,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
           __Pyx_INCREF(__pyx_t_8);
           __Pyx_INCREF(__pyx_t_7);
           #else
-          __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
-          __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           #endif
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         } else {
           Py_ssize_t index = -1;
-          __pyx_t_9 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_9 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_9);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
@@ -14955,7 +14957,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
           __Pyx_GOTREF(__pyx_t_8);
           index = 1; __pyx_t_7 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_7)) goto __pyx_L14_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_7);
-          if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_t_10 = NULL;
           __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
           goto __pyx_L15_unpacking_done;
@@ -14963,7 +14965,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
           __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
           __pyx_t_10 = NULL;
           if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_L15_unpacking_done:;
         }
         __Pyx_XDECREF_SET(__pyx_v_check, __pyx_t_8);
@@ -14972,38 +14974,38 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
         __pyx_t_7 = 0;
         __Pyx_INCREF(__pyx_t_3);
         __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
-        __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_3);
         __pyx_t_3 = __pyx_t_6;
         __pyx_t_6 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":965
+        /* "src/lxml/lxml.objectify.pyx":968
  *                     after = ()
  *                 for i, (check, pytype) in enumerate(_TYPE_CHECKS):
  *                     if last_pos == -1 and pytype.name in before:             # <<<<<<<<<<<<<<
  *                         last_pos = i
  *                     if pytype.name in after:
  */
-        __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_v_last_pos, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_v_last_pos, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         if (__pyx_t_2) {
         } else {
           __pyx_t_1 = __pyx_t_2;
           goto __pyx_L17_bool_binop_done;
         }
-        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_v_before, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_v_before, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __pyx_t_11 = (__pyx_t_2 != 0);
         __pyx_t_1 = __pyx_t_11;
         __pyx_L17_bool_binop_done:;
         if (__pyx_t_1) {
 
-          /* "src/lxml/lxml.objectify.pyx":966
+          /* "src/lxml/lxml.objectify.pyx":969
  *                 for i, (check, pytype) in enumerate(_TYPE_CHECKS):
  *                     if last_pos == -1 and pytype.name in before:
  *                         last_pos = i             # <<<<<<<<<<<<<<
@@ -15013,7 +15015,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
           __Pyx_INCREF(__pyx_v_i);
           __Pyx_DECREF_SET(__pyx_v_last_pos, __pyx_v_i);
 
-          /* "src/lxml/lxml.objectify.pyx":965
+          /* "src/lxml/lxml.objectify.pyx":968
  *                     after = ()
  *                 for i, (check, pytype) in enumerate(_TYPE_CHECKS):
  *                     if last_pos == -1 and pytype.name in before:             # <<<<<<<<<<<<<<
@@ -15022,33 +15024,33 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
         }
 
-        /* "src/lxml/lxml.objectify.pyx":967
+        /* "src/lxml/lxml.objectify.pyx":970
  *                     if last_pos == -1 and pytype.name in before:
  *                         last_pos = i
  *                     if pytype.name in after:             # <<<<<<<<<<<<<<
  *                         first_pos = i+1
  *             if last_pos == -1:
  */
-        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_v_after, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_v_after, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __pyx_t_11 = (__pyx_t_1 != 0);
         if (__pyx_t_11) {
 
-          /* "src/lxml/lxml.objectify.pyx":968
+          /* "src/lxml/lxml.objectify.pyx":971
  *                         last_pos = i
  *                     if pytype.name in after:
  *                         first_pos = i+1             # <<<<<<<<<<<<<<
  *             if last_pos == -1:
  *                 _TYPE_CHECKS.append(entry)
  */
-          __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF_SET(__pyx_v_first_pos, __pyx_t_6);
           __pyx_t_6 = 0;
 
-          /* "src/lxml/lxml.objectify.pyx":967
+          /* "src/lxml/lxml.objectify.pyx":970
  *                     if last_pos == -1 and pytype.name in before:
  *                         last_pos = i
  *                     if pytype.name in after:             # <<<<<<<<<<<<<<
@@ -15057,7 +15059,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
         }
 
-        /* "src/lxml/lxml.objectify.pyx":964
+        /* "src/lxml/lxml.objectify.pyx":967
  *                 elif after is None:
  *                     after = ()
  *                 for i, (check, pytype) in enumerate(_TYPE_CHECKS):             # <<<<<<<<<<<<<<
@@ -15068,7 +15070,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":959
+      /* "src/lxml/lxml.objectify.pyx":962
  *             first_pos = 0
  *             last_pos = -1
  *             if before or after:             # <<<<<<<<<<<<<<
@@ -15077,20 +15079,20 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":969
+    /* "src/lxml/lxml.objectify.pyx":972
  *                     if pytype.name in after:
  *                         first_pos = i+1
  *             if last_pos == -1:             # <<<<<<<<<<<<<<
  *                 _TYPE_CHECKS.append(entry)
  *             elif first_pos > last_pos:
  */
-    __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_last_pos, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_last_pos, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_11) {
 
-      /* "src/lxml/lxml.objectify.pyx":970
+      /* "src/lxml/lxml.objectify.pyx":973
  *                         first_pos = i+1
  *             if last_pos == -1:
  *                 _TYPE_CHECKS.append(entry)             # <<<<<<<<<<<<<<
@@ -15099,11 +15101,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
       if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_v_entry); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_v_entry); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/lxml.objectify.pyx":969
+      /* "src/lxml/lxml.objectify.pyx":972
  *                     if pytype.name in after:
  *                         first_pos = i+1
  *             if last_pos == -1:             # <<<<<<<<<<<<<<
@@ -15113,19 +15115,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
       goto __pyx_L20;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":971
+    /* "src/lxml/lxml.objectify.pyx":974
  *             if last_pos == -1:
  *                 _TYPE_CHECKS.append(entry)
  *             elif first_pos > last_pos:             # <<<<<<<<<<<<<<
  *                 raise ValueError, u"inconsistent before/after dependencies"
  *             else:
  */
-    __pyx_t_3 = PyObject_RichCompare(__pyx_v_first_pos, __pyx_v_last_pos, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_RichCompare(__pyx_v_first_pos, __pyx_v_last_pos, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_11) {
 
-      /* "src/lxml/lxml.objectify.pyx":972
+      /* "src/lxml/lxml.objectify.pyx":975
  *                 _TYPE_CHECKS.append(entry)
  *             elif first_pos > last_pos:
  *                 raise ValueError, u"inconsistent before/after dependencies"             # <<<<<<<<<<<<<<
@@ -15133,9 +15135,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                 _TYPE_CHECKS.insert(last_pos, entry)
  */
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_inconsistent_before_after_depend, 0, 0);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/lxml.objectify.pyx":971
+      /* "src/lxml/lxml.objectify.pyx":974
  *             if last_pos == -1:
  *                 _TYPE_CHECKS.append(entry)
  *             elif first_pos > last_pos:             # <<<<<<<<<<<<<<
@@ -15144,7 +15146,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":974
+    /* "src/lxml/lxml.objectify.pyx":977
  *                 raise ValueError, u"inconsistent before/after dependencies"
  *             else:
  *                 _TYPE_CHECKS.insert(last_pos, entry)             # <<<<<<<<<<<<<<
@@ -15154,14 +15156,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
     /*else*/ {
       if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "insert");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_last_pos); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_12 = PyList_Insert(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_t_4, __pyx_v_entry); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_last_pos); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyList_Insert(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_t_4, __pyx_v_entry); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_L20:;
 
-    /* "src/lxml/lxml.objectify.pyx":951
+    /* "src/lxml/lxml.objectify.pyx":954
  *         if self.name == TREE_PYTYPE_NAME:
  *             raise ValueError, u"Cannot register tree type"
  *         if self.type_check is not None:             # <<<<<<<<<<<<<<
@@ -15170,7 +15172,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":976
+  /* "src/lxml/lxml.objectify.pyx":979
  *                 _TYPE_CHECKS.insert(last_pos, entry)
  * 
  *         _PYTYPE_DICT[self.name] = self             # <<<<<<<<<<<<<<
@@ -15179,11 +15181,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
   if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  if (unlikely(PyDict_SetItem(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name, ((PyObject *)__pyx_v_self)) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(PyDict_SetItem(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name, ((PyObject *)__pyx_v_self)) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":977
+  /* "src/lxml/lxml.objectify.pyx":980
  * 
  *         _PYTYPE_DICT[self.name] = self
  *         for xs_type in self._schema_types:             # <<<<<<<<<<<<<<
@@ -15192,21 +15194,21 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
   if (unlikely(__pyx_v_self->_schema_types == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_t_3 = __pyx_v_self->_schema_types; __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[0]; __pyx_lineno = 977; __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[0]; __pyx_lineno = 980; __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[0]; __pyx_lineno = 977; __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[0]; __pyx_lineno = 980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     #endif
     __Pyx_XDECREF_SET(__pyx_v_xs_type, __pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":978
+    /* "src/lxml/lxml.objectify.pyx":981
  *         _PYTYPE_DICT[self.name] = self
  *         for xs_type in self._schema_types:
  *             _SCHEMA_TYPE_DICT[xs_type] = self             # <<<<<<<<<<<<<<
@@ -15215,11 +15217,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
     if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
-    if (unlikely(PyDict_SetItem(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_xs_type, ((PyObject *)__pyx_v_self)) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(PyDict_SetItem(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_xs_type, ((PyObject *)__pyx_v_self)) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/lxml.objectify.pyx":977
+    /* "src/lxml/lxml.objectify.pyx":980
  * 
  *         _PYTYPE_DICT[self.name] = self
  *         for xs_type in self._schema_types:             # <<<<<<<<<<<<<<
@@ -15229,7 +15231,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":939
+  /* "src/lxml/lxml.objectify.pyx":942
  *         return "PyType(%s, %s)" % (self.name, self._type.__name__)
  * 
  *     def register(self, before=None, after=None):             # <<<<<<<<<<<<<<
@@ -15265,7 +15267,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":980
+/* "src/lxml/lxml.objectify.pyx":983
  *             _SCHEMA_TYPE_DICT[xs_type] = self
  * 
  *     def unregister(self):             # <<<<<<<<<<<<<<
@@ -15310,7 +15312,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("unregister", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":982
+  /* "src/lxml/lxml.objectify.pyx":985
  *     def unregister(self):
  *         u"unregister(self)"
  *         if _PYTYPE_DICT.get(self.name) is self:             # <<<<<<<<<<<<<<
@@ -15319,16 +15321,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  */
   if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = (__pyx_t_1 == ((PyObject *)__pyx_v_self));
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/lxml.objectify.pyx":983
+    /* "src/lxml/lxml.objectify.pyx":986
  *         u"unregister(self)"
  *         if _PYTYPE_DICT.get(self.name) is self:
  *             del _PYTYPE_DICT[self.name]             # <<<<<<<<<<<<<<
@@ -15337,11 +15339,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  */
     if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
-    if (PyDict_DelItem(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (PyDict_DelItem(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/lxml.objectify.pyx":982
+    /* "src/lxml/lxml.objectify.pyx":985
  *     def unregister(self):
  *         u"unregister(self)"
  *         if _PYTYPE_DICT.get(self.name) is self:             # <<<<<<<<<<<<<<
@@ -15350,7 +15352,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":984
+  /* "src/lxml/lxml.objectify.pyx":987
  *         if _PYTYPE_DICT.get(self.name) is self:
  *             del _PYTYPE_DICT[self.name]
  *         for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()):             # <<<<<<<<<<<<<<
@@ -15359,11 +15361,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  */
   if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "items");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_1 = __Pyx_PyDict_Items(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyDict_Items(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
@@ -15371,9 +15373,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
   for (;;) {
     if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
     #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     #else
-    __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     #endif
     if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
@@ -15386,7 +15388,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -15399,15 +15401,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
       __Pyx_INCREF(__pyx_t_6);
       __Pyx_INCREF(__pyx_t_7);
       #else
-      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __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[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       #endif
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
@@ -15415,7 +15417,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
       __Pyx_GOTREF(__pyx_t_6);
       index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_7);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_9 = NULL;
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       goto __pyx_L7_unpacking_done;
@@ -15423,7 +15425,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __pyx_t_9 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L7_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_xs_type, __pyx_t_6);
@@ -15431,7 +15433,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
     __Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":985
+    /* "src/lxml/lxml.objectify.pyx":988
  *             del _PYTYPE_DICT[self.name]
  *         for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()):
  *             if pytype is self:             # <<<<<<<<<<<<<<
@@ -15442,7 +15444,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/lxml.objectify.pyx":986
+      /* "src/lxml/lxml.objectify.pyx":989
  *         for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()):
  *             if pytype is self:
  *                 del _SCHEMA_TYPE_DICT[xs_type]             # <<<<<<<<<<<<<<
@@ -15451,11 +15453,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  */
       if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      if (PyDict_DelItem(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_xs_type) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (PyDict_DelItem(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_xs_type) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/lxml.objectify.pyx":985
+      /* "src/lxml/lxml.objectify.pyx":988
  *             del _PYTYPE_DICT[self.name]
  *         for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()):
  *             if pytype is self:             # <<<<<<<<<<<<<<
@@ -15464,7 +15466,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":984
+    /* "src/lxml/lxml.objectify.pyx":987
  *         if _PYTYPE_DICT.get(self.name) is self:
  *             del _PYTYPE_DICT[self.name]
  *         for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()):             # <<<<<<<<<<<<<<
@@ -15474,7 +15476,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":987
+  /* "src/lxml/lxml.objectify.pyx":990
  *             if pytype is self:
  *                 del _SCHEMA_TYPE_DICT[xs_type]
  *         if self.type_check is None:             # <<<<<<<<<<<<<<
@@ -15485,7 +15487,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/lxml.objectify.pyx":988
+    /* "src/lxml/lxml.objectify.pyx":991
  *                 del _SCHEMA_TYPE_DICT[xs_type]
  *         if self.type_check is None:
  *             return             # <<<<<<<<<<<<<<
@@ -15496,7 +15498,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
 
-    /* "src/lxml/lxml.objectify.pyx":987
+    /* "src/lxml/lxml.objectify.pyx":990
  *             if pytype is self:
  *                 del _SCHEMA_TYPE_DICT[xs_type]
  *         if self.type_check is None:             # <<<<<<<<<<<<<<
@@ -15505,7 +15507,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":989
+  /* "src/lxml/lxml.objectify.pyx":992
  *         if self.type_check is None:
  *             return
  *         try:             # <<<<<<<<<<<<<<
@@ -15519,16 +15521,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
     __Pyx_XGOTREF(__pyx_t_12);
     /*try:*/ {
 
-      /* "src/lxml/lxml.objectify.pyx":990
+      /* "src/lxml/lxml.objectify.pyx":993
  *             return
  *         try:
  *             _TYPE_CHECKS.remove( (self.type_check, self) )             # <<<<<<<<<<<<<<
  *         except ValueError:
  *             pass
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_n_s_remove); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_n_s_remove); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
+      __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_INCREF(__pyx_v_self->type_check);
       __Pyx_GIVEREF(__pyx_v_self->type_check);
@@ -15547,24 +15549,24 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
         }
       }
       if (!__pyx_t_6) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_GOTREF(__pyx_t_1);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
         __Pyx_GIVEREF(__pyx_t_7);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_7);
         __pyx_t_7 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":989
+      /* "src/lxml/lxml.objectify.pyx":992
  *         if self.type_check is None:
  *             return
  *         try:             # <<<<<<<<<<<<<<
@@ -15583,7 +15585,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":991
+    /* "src/lxml/lxml.objectify.pyx":994
  *         try:
  *             _TYPE_CHECKS.remove( (self.type_check, self) )
  *         except ValueError:             # <<<<<<<<<<<<<<
@@ -15598,7 +15600,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
     goto __pyx_L12_except_error;
     __pyx_L12_except_error:;
 
-    /* "src/lxml/lxml.objectify.pyx":989
+    /* "src/lxml/lxml.objectify.pyx":992
  *         if self.type_check is None:
  *             return
  *         try:             # <<<<<<<<<<<<<<
@@ -15618,7 +15620,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
     __pyx_L17_try_end:;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":980
+  /* "src/lxml/lxml.objectify.pyx":983
  *             _SCHEMA_TYPE_DICT[xs_type] = self
  * 
  *     def unregister(self):             # <<<<<<<<<<<<<<
@@ -15645,7 +15647,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":999
+/* "src/lxml/lxml.objectify.pyx":1002
  *         Note that this must be set before registering the type!
  *         """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -15671,7 +15673,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes___get__(stru
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1000
+  /* "src/lxml/lxml.objectify.pyx":1003
  *         """
  *         def __get__(self):
  *             return self._schema_types             # <<<<<<<<<<<<<<
@@ -15683,7 +15685,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes___get__(stru
   __pyx_r = __pyx_v_self->_schema_types;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":999
+  /* "src/lxml/lxml.objectify.pyx":1002
  *         Note that this must be set before registering the type!
  *         """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -15698,7 +15700,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes___get__(stru
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1001
+/* "src/lxml/lxml.objectify.pyx":1004
  *         def __get__(self):
  *             return self._schema_types
  *         def __set__(self, types):             # <<<<<<<<<<<<<<
@@ -15729,14 +15731,14 @@ static int __pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes_2__set__(struct __
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1002
+  /* "src/lxml/lxml.objectify.pyx":1005
  *             return self._schema_types
  *         def __set__(self, types):
  *             self._schema_types = list(map(unicode, types))             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)(&PyUnicode_Type)));
   __Pyx_GIVEREF(((PyObject *)(&PyUnicode_Type)));
@@ -15744,10 +15746,10 @@ static int __pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes_2__set__(struct __
   __Pyx_INCREF(__pyx_v_types);
   __Pyx_GIVEREF(__pyx_v_types);
   PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_types);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_GIVEREF(__pyx_t_1);
@@ -15756,7 +15758,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes_2__set__(struct __
   __pyx_v_self->_schema_types = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1001
+  /* "src/lxml/lxml.objectify.pyx":1004
  *         def __get__(self):
  *             return self._schema_types
  *         def __set__(self, types):             # <<<<<<<<<<<<<<
@@ -15777,7 +15779,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes_2__set__(struct __
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":912
+/* "src/lxml/lxml.objectify.pyx":915
  *     matching type will be used.
  *     """
  *     cdef readonly object name             # <<<<<<<<<<<<<<
@@ -15814,7 +15816,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4name___get__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":913
+/* "src/lxml/lxml.objectify.pyx":916
  *     """
  *     cdef readonly object name
  *     cdef readonly object type_check             # <<<<<<<<<<<<<<
@@ -15851,7 +15853,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_10type_check___get__(struct _
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":914
+/* "src/lxml/lxml.objectify.pyx":917
  *     cdef readonly object name
  *     cdef readonly object type_check
  *     cdef readonly object stringify             # <<<<<<<<<<<<<<
@@ -15888,7 +15890,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_9stringify___get__(struct __p
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1009
+/* "src/lxml/lxml.objectify.pyx":1012
  * cdef list _TYPE_CHECKS = []
  * 
  * def __lower_bool(b):             # <<<<<<<<<<<<<<
@@ -15920,7 +15922,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6__lower_bool(CYTHON_UNUSED PyObject
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__lower_bool", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1010
+  /* "src/lxml/lxml.objectify.pyx":1013
  * 
  * def __lower_bool(b):
  *     return u"true" if b else u"false"             # <<<<<<<<<<<<<<
@@ -15928,7 +15930,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6__lower_bool(CYTHON_UNUSED PyObject
  * cdef _pytypename(obj):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_b); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1010; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_b); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_2) {
     __Pyx_INCREF(__pyx_n_u_true);
     __pyx_t_1 = __pyx_n_u_true;
@@ -15940,7 +15942,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6__lower_bool(CYTHON_UNUSED PyObject
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1009
+  /* "src/lxml/lxml.objectify.pyx":1012
  * cdef list _TYPE_CHECKS = []
  * 
  * def __lower_bool(b):             # <<<<<<<<<<<<<<
@@ -15959,7 +15961,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6__lower_bool(CYTHON_UNUSED PyObject
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1012
+/* "src/lxml/lxml.objectify.pyx":1015
  *     return u"true" if b else u"false"
  * 
  * cdef _pytypename(obj):             # <<<<<<<<<<<<<<
@@ -15977,7 +15979,7 @@ static PyObject *__pyx_f_4lxml_9objectify__pytypename(PyObject *__pyx_v_obj) {
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_pytypename", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1013
+  /* "src/lxml/lxml.objectify.pyx":1016
  * 
  * cdef _pytypename(obj):
  *     return u"str" if python._isString(obj) else _typename(obj)             # <<<<<<<<<<<<<<
@@ -15989,7 +15991,7 @@ static PyObject *__pyx_f_4lxml_9objectify__pytypename(PyObject *__pyx_v_obj) {
     __Pyx_INCREF(__pyx_n_u_str);
     __pyx_t_1 = __pyx_n_u_str;
   } else {
-    __pyx_t_2 = __pyx_f_4lxml_9objectify__typename(__pyx_v_obj); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __pyx_f_4lxml_9objectify__typename(__pyx_v_obj); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_1 = __pyx_t_2;
     __pyx_t_2 = 0;
@@ -15998,7 +16000,7 @@ static PyObject *__pyx_f_4lxml_9objectify__pytypename(PyObject *__pyx_v_obj) {
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1012
+  /* "src/lxml/lxml.objectify.pyx":1015
  *     return u"true" if b else u"false"
  * 
  * cdef _pytypename(obj):             # <<<<<<<<<<<<<<
@@ -16018,7 +16020,7 @@ static PyObject *__pyx_f_4lxml_9objectify__pytypename(PyObject *__pyx_v_obj) {
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1015
+/* "src/lxml/lxml.objectify.pyx":1018
  *     return u"str" if python._isString(obj) else _typename(obj)
  * 
  * def pytypename(obj):             # <<<<<<<<<<<<<<
@@ -16050,7 +16052,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_8pytypename(CYTHON_UNUSED PyObject *_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("pytypename", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1020
+  /* "src/lxml/lxml.objectify.pyx":1023
  *     Find the name of the corresponding PyType for a Python object.
  *     """
  *     return _pytypename(obj)             # <<<<<<<<<<<<<<
@@ -16058,13 +16060,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_8pytypename(CYTHON_UNUSED PyObject *_
  * cdef _registerPyTypes():
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_9objectify__pytypename(__pyx_v_obj); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_9objectify__pytypename(__pyx_v_obj); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1015
+  /* "src/lxml/lxml.objectify.pyx":1018
  *     return u"str" if python._isString(obj) else _typename(obj)
  * 
  * def pytypename(obj):             # <<<<<<<<<<<<<<
@@ -16083,7 +16085,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_8pytypename(CYTHON_UNUSED PyObject *_
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1022
+/* "src/lxml/lxml.objectify.pyx":1025
  *     return _pytypename(obj)
  * 
  * cdef _registerPyTypes():             # <<<<<<<<<<<<<<
@@ -16103,14 +16105,14 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_registerPyTypes", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1023
+  /* "src/lxml/lxml.objectify.pyx":1026
  * 
  * cdef _registerPyTypes():
  *     pytype = PyType(u'int', int, IntElement)             # <<<<<<<<<<<<<<
  *     pytype.xmlSchemaTypes = (u"integer", u"int", u"short", u"byte", u"unsignedShort",
  *                              u"unsignedByte", u"nonPositiveInteger",
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_u_int);
   __Pyx_GIVEREF(__pyx_n_u_int);
@@ -16121,29 +16123,29 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
   __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
   PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_pytype = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1024
+  /* "src/lxml/lxml.objectify.pyx":1027
  * cdef _registerPyTypes():
  *     pytype = PyType(u'int', int, IntElement)
  *     pytype.xmlSchemaTypes = (u"integer", u"int", u"short", u"byte", u"unsignedShort",             # <<<<<<<<<<<<<<
  *                              u"unsignedByte", u"nonPositiveInteger",
  *                              u"negativeInteger", u"long", u"nonNegativeInteger",
  */
-  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1028
+  /* "src/lxml/lxml.objectify.pyx":1031
  *                              u"negativeInteger", u"long", u"nonNegativeInteger",
  *                              u"unsignedLong", u"unsignedInt", u"positiveInteger",)
  *     pytype.register()             # <<<<<<<<<<<<<<
  * 
  *     # 'long' type just for backwards compatibility
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -16156,23 +16158,23 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __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;
 
-  /* "src/lxml/lxml.objectify.pyx":1031
+  /* "src/lxml/lxml.objectify.pyx":1034
  * 
  *     # 'long' type just for backwards compatibility
  *     pytype = PyType(u'long', None, IntElement)             # <<<<<<<<<<<<<<
  *     pytype.register()
  * 
  */
-  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_u_long);
   __Pyx_GIVEREF(__pyx_n_u_long);
@@ -16183,20 +16185,20 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
   __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
   PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1));
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1032
+  /* "src/lxml/lxml.objectify.pyx":1035
  *     # 'long' type just for backwards compatibility
  *     pytype = PyType(u'long', None, IntElement)
  *     pytype.register()             # <<<<<<<<<<<<<<
  * 
- *     pytype = PyType(u'float', float, FloatElement)
+ *     pytype = PyType(u'float', float, FloatElement, repr)
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -16209,216 +16211,221 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1034
+  /* "src/lxml/lxml.objectify.pyx":1037
  *     pytype.register()
  * 
- *     pytype = PyType(u'float', float, FloatElement)             # <<<<<<<<<<<<<<
+ *     pytype = PyType(u'float', float, FloatElement, repr)             # <<<<<<<<<<<<<<
  *     pytype.xmlSchemaTypes = (u"double", u"float")
  *     pytype.register()
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetBuiltinName(__pyx_n_s_repr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_u_float);
   __Pyx_GIVEREF(__pyx_n_u_float);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_float);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_float);
   __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
   __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)(&PyFloat_Type)));
+  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)(&PyFloat_Type)));
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_FloatElement));
   __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_FloatElement));
-  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_FloatElement));
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_2));
-  __pyx_t_2 = 0;
+  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_FloatElement));
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1));
+  __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1035
+  /* "src/lxml/lxml.objectify.pyx":1038
  * 
- *     pytype = PyType(u'float', float, FloatElement)
+ *     pytype = PyType(u'float', float, FloatElement, repr)
  *     pytype.xmlSchemaTypes = (u"double", u"float")             # <<<<<<<<<<<<<<
  *     pytype.register()
  * 
  */
-  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1036
- *     pytype = PyType(u'float', float, FloatElement)
+  /* "src/lxml/lxml.objectify.pyx":1039
+ *     pytype = PyType(u'float', float, FloatElement, repr)
  *     pytype.xmlSchemaTypes = (u"double", u"float")
  *     pytype.register()             # <<<<<<<<<<<<<<
  * 
  *     pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
       __Pyx_INCREF(__pyx_t_3);
       __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_1, function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1038
+  /* "src/lxml/lxml.objectify.pyx":1041
  *     pytype.register()
  * 
  *     pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)             # <<<<<<<<<<<<<<
  *     pytype.xmlSchemaTypes = (u"boolean",)
  *     pytype.register()
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_checkBool); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_lower_bool); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_checkBool); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_lower_bool); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_n_u_bool);
   __Pyx_GIVEREF(__pyx_n_u_bool);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_u_bool);
-  __Pyx_GIVEREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_BoolElement));
   __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_BoolElement));
   PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_BoolElement));
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_1);
-  __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_2);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1));
-  __pyx_t_1 = 0;
+  __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_2));
+  __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1039
+  /* "src/lxml/lxml.objectify.pyx":1042
  * 
  *     pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)
  *     pytype.xmlSchemaTypes = (u"boolean",)             # <<<<<<<<<<<<<<
  *     pytype.register()
  * 
  */
-  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1040
+  /* "src/lxml/lxml.objectify.pyx":1043
  *     pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)
  *     pytype.xmlSchemaTypes = (u"boolean",)
  *     pytype.register()             # <<<<<<<<<<<<<<
  * 
  *     pytype = PyType(u'str', None, StringElement)
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = NULL;
+  __pyx_t_1 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
-    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
-    if (likely(__pyx_t_2)) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_1)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_1);
       __Pyx_INCREF(function);
       __Pyx_DECREF_SET(__pyx_t_3, function);
     }
   }
-  if (__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_1) {
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1042
+  /* "src/lxml/lxml.objectify.pyx":1045
  *     pytype.register()
  * 
  *     pytype = PyType(u'str', None, StringElement)             # <<<<<<<<<<<<<<
  *     pytype.xmlSchemaTypes = (u"string", u"normalizedString", u"token", u"language",
  *                              u"Name", u"NCName", u"ID", u"IDREF", u"ENTITY",
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_u_str);
   __Pyx_GIVEREF(__pyx_n_u_str);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_str);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_str);
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None);
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
   __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
-  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_3));
   __pyx_t_3 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1043
+  /* "src/lxml/lxml.objectify.pyx":1046
  * 
  *     pytype = PyType(u'str', None, StringElement)
  *     pytype.xmlSchemaTypes = (u"string", u"normalizedString", u"token", u"language",             # <<<<<<<<<<<<<<
  *                              u"Name", u"NCName", u"ID", u"IDREF", u"ENTITY",
  *                              u"NMTOKEN", )
  */
-  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1046
+  /* "src/lxml/lxml.objectify.pyx":1049
  *                              u"Name", u"NCName", u"ID", u"IDREF", u"ENTITY",
  *                              u"NMTOKEN", )
  *     pytype.register()             # <<<<<<<<<<<<<<
  * 
  *     # since lxml 2.0
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
-    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
-    if (likely(__pyx_t_2)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-      __Pyx_INCREF(__pyx_t_2);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_1);
       __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_1, function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
     }
   }
-  if (__pyx_t_2) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_1) {
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1049
+  /* "src/lxml/lxml.objectify.pyx":1052
  * 
  *     # since lxml 2.0
  *     pytype = PyType(u'NoneType', None, NoneElement)             # <<<<<<<<<<<<<<
  *     pytype.register()
  * 
  */
-  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_n_u_NoneType);
   __Pyx_GIVEREF(__pyx_n_u_NoneType);
@@ -16429,95 +16436,95 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
   __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
   PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1));
-  __pyx_t_1 = 0;
+  __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_2));
+  __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1050
+  /* "src/lxml/lxml.objectify.pyx":1053
  *     # since lxml 2.0
  *     pytype = PyType(u'NoneType', None, NoneElement)
  *     pytype.register()             # <<<<<<<<<<<<<<
  * 
  *     # backwards compatibility
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = NULL;
+  __pyx_t_1 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
-    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
-    if (likely(__pyx_t_2)) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_1)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_1);
       __Pyx_INCREF(function);
       __Pyx_DECREF_SET(__pyx_t_3, function);
     }
   }
-  if (__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_1) {
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1053
+  /* "src/lxml/lxml.objectify.pyx":1056
  * 
  *     # backwards compatibility
  *     pytype = PyType(u'none', None, NoneElement)             # <<<<<<<<<<<<<<
  *     pytype.register()
  * 
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_u_none);
   __Pyx_GIVEREF(__pyx_n_u_none);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_none);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_none);
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None);
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
   __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
-  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_3));
   __pyx_t_3 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1054
+  /* "src/lxml/lxml.objectify.pyx":1057
  *     # backwards compatibility
  *     pytype = PyType(u'none', None, NoneElement)
  *     pytype.register()             # <<<<<<<<<<<<<<
  * 
  * # non-registered PyType for inner tree elements
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
-    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
-    if (likely(__pyx_t_2)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-      __Pyx_INCREF(__pyx_t_2);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_1);
       __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_1, function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
     }
   }
-  if (__pyx_t_2) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_1) {
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1022
+  /* "src/lxml/lxml.objectify.pyx":1025
  *     return _pytypename(obj)
  * 
  * cdef _registerPyTypes():             # <<<<<<<<<<<<<<
@@ -16541,7 +16548,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1061
+/* "src/lxml/lxml.objectify.pyx":1064
  * _registerPyTypes()
  * 
  * def getRegisteredTypes():             # <<<<<<<<<<<<<<
@@ -16588,31 +16595,31 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("getRegisteredTypes", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1076
+  /* "src/lxml/lxml.objectify.pyx":1079
  *     end of the type list.
  *     """
  *     cdef list types = []             # <<<<<<<<<<<<<<
  *     cdef set known = set()
  *     for check, pytype in _TYPE_CHECKS:
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_types = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1077
+  /* "src/lxml/lxml.objectify.pyx":1080
  *     """
  *     cdef list types = []
  *     cdef set known = set()             # <<<<<<<<<<<<<<
  *     for check, pytype in _TYPE_CHECKS:
  *         name = pytype.name
  */
-  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_known = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1078
+  /* "src/lxml/lxml.objectify.pyx":1081
  *     cdef list types = []
  *     cdef set known = set()
  *     for check, pytype in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -16621,15 +16628,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  */
   if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_t_1 = __pyx_v_4lxml_9objectify__TYPE_CHECKS; __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[0]; __pyx_lineno = 1078; __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[0]; __pyx_lineno = 1081; __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[0]; __pyx_lineno = 1078; __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[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     #endif
     if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
@@ -16642,7 +16649,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -16655,15 +16662,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
       __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[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __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[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __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[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __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;
@@ -16671,7 +16678,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
       __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[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __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;
@@ -16679,7 +16686,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_t_7 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L6_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_check, __pyx_t_4);
@@ -16687,48 +16694,48 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
     __Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1079
+    /* "src/lxml/lxml.objectify.pyx":1082
  *     cdef set known = set()
  *     for check, pytype in _TYPE_CHECKS:
  *         name = pytype.name             # <<<<<<<<<<<<<<
  *         if name not in known:
  *             known.add(name)
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1080
+    /* "src/lxml/lxml.objectify.pyx":1083
  *     for check, pytype in _TYPE_CHECKS:
  *         name = pytype.name
  *         if name not in known:             # <<<<<<<<<<<<<<
  *             known.add(name)
  *             types.append(pytype)
  */
-    __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_v_name, __pyx_v_known, Py_NE)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_v_name, __pyx_v_known, Py_NE)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_9 = (__pyx_t_8 != 0);
     if (__pyx_t_9) {
 
-      /* "src/lxml/lxml.objectify.pyx":1081
+      /* "src/lxml/lxml.objectify.pyx":1084
  *         name = pytype.name
  *         if name not in known:
  *             known.add(name)             # <<<<<<<<<<<<<<
  *             types.append(pytype)
  *     for pytype in _PYTYPE_DICT.values():
  */
-      __pyx_t_10 = PySet_Add(__pyx_v_known, __pyx_v_name); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PySet_Add(__pyx_v_known, __pyx_v_name); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/lxml.objectify.pyx":1082
+      /* "src/lxml/lxml.objectify.pyx":1085
  *         if name not in known:
  *             known.add(name)
  *             types.append(pytype)             # <<<<<<<<<<<<<<
  *     for pytype in _PYTYPE_DICT.values():
  *         name = pytype.name
  */
-      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_types, __pyx_v_pytype); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_types, __pyx_v_pytype); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/lxml.objectify.pyx":1080
+      /* "src/lxml/lxml.objectify.pyx":1083
  *     for check, pytype in _TYPE_CHECKS:
  *         name = pytype.name
  *         if name not in known:             # <<<<<<<<<<<<<<
@@ -16737,7 +16744,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1078
+    /* "src/lxml/lxml.objectify.pyx":1081
  *     cdef list types = []
  *     cdef set known = set()
  *     for check, pytype in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -16747,7 +16754,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1083
+  /* "src/lxml/lxml.objectify.pyx":1086
  *             known.add(name)
  *             types.append(pytype)
  *     for pytype in _PYTYPE_DICT.values():             # <<<<<<<<<<<<<<
@@ -16756,17 +16763,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  */
   if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "values");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_1 = __Pyx_PyDict_Values(__pyx_v_4lxml_9objectify__PYTYPE_DICT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyDict_Values(__pyx_v_4lxml_9objectify__PYTYPE_DICT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
     __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0;
     __pyx_t_11 = NULL;
   } else {
-    __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -16774,17 +16781,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       } else {
         if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       }
@@ -16794,7 +16801,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -16803,48 +16810,48 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
     __Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1084
+    /* "src/lxml/lxml.objectify.pyx":1087
  *             types.append(pytype)
  *     for pytype in _PYTYPE_DICT.values():
  *         name = pytype.name             # <<<<<<<<<<<<<<
  *         if name not in known:
  *             known.add(name)
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1085
+    /* "src/lxml/lxml.objectify.pyx":1088
  *     for pytype in _PYTYPE_DICT.values():
  *         name = pytype.name
  *         if name not in known:             # <<<<<<<<<<<<<<
  *             known.add(name)
  *             types.append(pytype)
  */
-    __pyx_t_9 = (__Pyx_PySequence_ContainsTF(__pyx_v_name, __pyx_v_known, Py_NE)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = (__Pyx_PySequence_ContainsTF(__pyx_v_name, __pyx_v_known, Py_NE)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_8 = (__pyx_t_9 != 0);
     if (__pyx_t_8) {
 
-      /* "src/lxml/lxml.objectify.pyx":1086
+      /* "src/lxml/lxml.objectify.pyx":1089
  *         name = pytype.name
  *         if name not in known:
  *             known.add(name)             # <<<<<<<<<<<<<<
  *             types.append(pytype)
  *     return types
  */
-      __pyx_t_10 = PySet_Add(__pyx_v_known, __pyx_v_name); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PySet_Add(__pyx_v_known, __pyx_v_name); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/lxml.objectify.pyx":1087
+      /* "src/lxml/lxml.objectify.pyx":1090
  *         if name not in known:
  *             known.add(name)
  *             types.append(pytype)             # <<<<<<<<<<<<<<
  *     return types
  * 
  */
-      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_types, __pyx_v_pytype); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_types, __pyx_v_pytype); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/lxml.objectify.pyx":1085
+      /* "src/lxml/lxml.objectify.pyx":1088
  *     for pytype in _PYTYPE_DICT.values():
  *         name = pytype.name
  *         if name not in known:             # <<<<<<<<<<<<<<
@@ -16853,7 +16860,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1083
+    /* "src/lxml/lxml.objectify.pyx":1086
  *             known.add(name)
  *             types.append(pytype)
  *     for pytype in _PYTYPE_DICT.values():             # <<<<<<<<<<<<<<
@@ -16863,7 +16870,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1088
+  /* "src/lxml/lxml.objectify.pyx":1091
  *             known.add(name)
  *             types.append(pytype)
  *     return types             # <<<<<<<<<<<<<<
@@ -16875,7 +16882,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
   __pyx_r = __pyx_v_types;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1061
+  /* "src/lxml/lxml.objectify.pyx":1064
  * _registerPyTypes()
  * 
  * def getRegisteredTypes():             # <<<<<<<<<<<<<<
@@ -16903,7 +16910,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1090
+/* "src/lxml/lxml.objectify.pyx":1093
  *     return types
  * 
  * cdef PyType _guessPyType(value, PyType defaulttype):             # <<<<<<<<<<<<<<
@@ -16934,7 +16941,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_guessPyType", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1091
+  /* "src/lxml/lxml.objectify.pyx":1094
  * 
  * cdef PyType _guessPyType(value, PyType defaulttype):
  *     if value is None:             # <<<<<<<<<<<<<<
@@ -16945,7 +16952,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1092
+    /* "src/lxml/lxml.objectify.pyx":1095
  * cdef PyType _guessPyType(value, PyType defaulttype):
  *     if value is None:
  *         return None             # <<<<<<<<<<<<<<
@@ -16957,7 +16964,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
     __pyx_r = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None);
     goto __pyx_L0;
 
-    /* "src/lxml/lxml.objectify.pyx":1091
+    /* "src/lxml/lxml.objectify.pyx":1094
  * 
  * cdef PyType _guessPyType(value, PyType defaulttype):
  *     if value is None:             # <<<<<<<<<<<<<<
@@ -16966,7 +16973,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1093
+  /* "src/lxml/lxml.objectify.pyx":1096
  *     if value is None:
  *         return None
  *     for type_check, tested_pytype in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -16975,15 +16982,15 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
  */
   if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_t_3 = __pyx_v_4lxml_9objectify__TYPE_CHECKS; __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[0]; __pyx_lineno = 1093; __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[0]; __pyx_lineno = 1096; __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[0]; __pyx_lineno = 1093; __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[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     #endif
     if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
@@ -16996,7 +17003,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -17009,15 +17016,15 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       __Pyx_INCREF(__pyx_t_6);
       __Pyx_INCREF(__pyx_t_7);
       #else
-      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __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[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       #endif
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
@@ -17025,7 +17032,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       __Pyx_GOTREF(__pyx_t_6);
       index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_7);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_9 = NULL;
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       goto __pyx_L7_unpacking_done;
@@ -17033,7 +17040,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __pyx_t_9 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L7_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_type_check, __pyx_t_6);
@@ -17041,7 +17048,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
     __Pyx_XDECREF_SET(__pyx_v_tested_pytype, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1094
+    /* "src/lxml/lxml.objectify.pyx":1097
  *         return None
  *     for type_check, tested_pytype in _TYPE_CHECKS:
  *         try:             # <<<<<<<<<<<<<<
@@ -17055,7 +17062,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       __Pyx_XGOTREF(__pyx_t_12);
       /*try:*/ {
 
-        /* "src/lxml/lxml.objectify.pyx":1095
+        /* "src/lxml/lxml.objectify.pyx":1098
  *     for type_check, tested_pytype in _TYPE_CHECKS:
  *         try:
  *             type_check(value)             # <<<<<<<<<<<<<<
@@ -17074,23 +17081,23 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
           }
         }
         if (!__pyx_t_6) {
-          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
           __Pyx_GOTREF(__pyx_t_5);
         } else {
-          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
           __Pyx_GOTREF(__pyx_t_8);
           __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
           __Pyx_INCREF(__pyx_v_value);
           __Pyx_GIVEREF(__pyx_v_value);
           PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_value);
-          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
           __Pyx_GOTREF(__pyx_t_5);
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         }
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1096
+        /* "src/lxml/lxml.objectify.pyx":1099
  *         try:
  *             type_check(value)
  *             return <PyType>tested_pytype             # <<<<<<<<<<<<<<
@@ -17103,7 +17110,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         goto __pyx_L12_try_return;
 
-        /* "src/lxml/lxml.objectify.pyx":1094
+        /* "src/lxml/lxml.objectify.pyx":1097
  *         return None
  *     for type_check, tested_pytype in _TYPE_CHECKS:
  *         try:             # <<<<<<<<<<<<<<
@@ -17117,7 +17124,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1097
+      /* "src/lxml/lxml.objectify.pyx":1100
  *             type_check(value)
  *             return <PyType>tested_pytype
  *         except IGNORABLE_ERRORS:             # <<<<<<<<<<<<<<
@@ -17132,7 +17139,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       goto __pyx_L10_except_error;
       __pyx_L10_except_error:;
 
-      /* "src/lxml/lxml.objectify.pyx":1094
+      /* "src/lxml/lxml.objectify.pyx":1097
  *         return None
  *     for type_check, tested_pytype in _TYPE_CHECKS:
  *         try:             # <<<<<<<<<<<<<<
@@ -17157,7 +17164,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1093
+    /* "src/lxml/lxml.objectify.pyx":1096
  *     if value is None:
  *         return None
  *     for type_check, tested_pytype in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -17167,7 +17174,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1100
+  /* "src/lxml/lxml.objectify.pyx":1103
  *             # could not be parsed as the specified type => ignore
  *             pass
  *     return defaulttype             # <<<<<<<<<<<<<<
@@ -17179,7 +17186,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
   __pyx_r = __pyx_v_defaulttype;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1090
+  /* "src/lxml/lxml.objectify.pyx":1093
  *     return types
  * 
  * cdef PyType _guessPyType(value, PyType defaulttype):             # <<<<<<<<<<<<<<
@@ -17204,7 +17211,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1102
+/* "src/lxml/lxml.objectify.pyx":1105
  *     return defaulttype
  * 
  * cdef object _guessElementClass(tree.xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -17236,19 +17243,19 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_guessElementClass", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1103
+  /* "src/lxml/lxml.objectify.pyx":1106
  * 
  * cdef object _guessElementClass(tree.xmlNode* c_node):
  *     value = textOf(c_node)             # <<<<<<<<<<<<<<
  *     if value is None:
  *         return None
  */
-  __pyx_t_1 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_value = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1104
+  /* "src/lxml/lxml.objectify.pyx":1107
  * cdef object _guessElementClass(tree.xmlNode* c_node):
  *     value = textOf(c_node)
  *     if value is None:             # <<<<<<<<<<<<<<
@@ -17259,7 +17266,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/lxml.objectify.pyx":1105
+    /* "src/lxml/lxml.objectify.pyx":1108
  *     value = textOf(c_node)
  *     if value is None:
  *         return None             # <<<<<<<<<<<<<<
@@ -17271,7 +17278,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
     __pyx_r = Py_None;
     goto __pyx_L0;
 
-    /* "src/lxml/lxml.objectify.pyx":1104
+    /* "src/lxml/lxml.objectify.pyx":1107
  * cdef object _guessElementClass(tree.xmlNode* c_node):
  *     value = textOf(c_node)
  *     if value is None:             # <<<<<<<<<<<<<<
@@ -17280,17 +17287,17 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1106
+  /* "src/lxml/lxml.objectify.pyx":1109
  *     if value is None:
  *         return None
  *     if value == '':             # <<<<<<<<<<<<<<
  *         return StringElement
  * 
  */
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_value, __pyx_kp_s__2, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_value, __pyx_kp_s__2, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_3) {
 
-    /* "src/lxml/lxml.objectify.pyx":1107
+    /* "src/lxml/lxml.objectify.pyx":1110
  *         return None
  *     if value == '':
  *         return StringElement             # <<<<<<<<<<<<<<
@@ -17302,7 +17309,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
     __pyx_r = ((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement);
     goto __pyx_L0;
 
-    /* "src/lxml/lxml.objectify.pyx":1106
+    /* "src/lxml/lxml.objectify.pyx":1109
  *     if value is None:
  *         return None
  *     if value == '':             # <<<<<<<<<<<<<<
@@ -17311,7 +17318,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1109
+  /* "src/lxml/lxml.objectify.pyx":1112
  *         return StringElement
  * 
  *     for type_check, pytype in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -17320,15 +17327,15 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  */
   if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_t_1 = __pyx_v_4lxml_9objectify__TYPE_CHECKS; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
   for (;;) {
     if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
     #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     #else
-    __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     #endif
     if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
@@ -17341,7 +17348,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -17354,15 +17361,15 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       __Pyx_INCREF(__pyx_t_6);
       __Pyx_INCREF(__pyx_t_7);
       #else
-      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __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[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       #endif
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
@@ -17370,7 +17377,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       __Pyx_GOTREF(__pyx_t_6);
       index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L7_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_7);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_9 = NULL;
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       goto __pyx_L8_unpacking_done;
@@ -17378,7 +17385,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __pyx_t_9 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L8_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_type_check, __pyx_t_6);
@@ -17386,7 +17393,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
     __Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1110
+    /* "src/lxml/lxml.objectify.pyx":1113
  * 
  *     for type_check, pytype in _TYPE_CHECKS:
  *         try:             # <<<<<<<<<<<<<<
@@ -17400,7 +17407,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       __Pyx_XGOTREF(__pyx_t_12);
       /*try:*/ {
 
-        /* "src/lxml/lxml.objectify.pyx":1111
+        /* "src/lxml/lxml.objectify.pyx":1114
  *     for type_check, pytype in _TYPE_CHECKS:
  *         try:
  *             type_check(value)             # <<<<<<<<<<<<<<
@@ -17419,23 +17426,23 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
           }
         }
         if (!__pyx_t_6) {
-          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
+          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
           __Pyx_GOTREF(__pyx_t_5);
         } else {
-          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
+          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
           __Pyx_GOTREF(__pyx_t_8);
           __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
           __Pyx_INCREF(__pyx_v_value);
           __Pyx_GIVEREF(__pyx_v_value);
           PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_value);
-          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
+          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
           __Pyx_GOTREF(__pyx_t_5);
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         }
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1112
+        /* "src/lxml/lxml.objectify.pyx":1115
  *         try:
  *             type_check(value)
  *             return (<PyType>pytype)._type             # <<<<<<<<<<<<<<
@@ -17448,7 +17455,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L13_try_return;
 
-        /* "src/lxml/lxml.objectify.pyx":1110
+        /* "src/lxml/lxml.objectify.pyx":1113
  * 
  *     for type_check, pytype in _TYPE_CHECKS:
  *         try:             # <<<<<<<<<<<<<<
@@ -17462,7 +17469,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1113
+      /* "src/lxml/lxml.objectify.pyx":1116
  *             type_check(value)
  *             return (<PyType>pytype)._type
  *         except IGNORABLE_ERRORS:             # <<<<<<<<<<<<<<
@@ -17477,7 +17484,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       goto __pyx_L11_except_error;
       __pyx_L11_except_error:;
 
-      /* "src/lxml/lxml.objectify.pyx":1110
+      /* "src/lxml/lxml.objectify.pyx":1113
  * 
  *     for type_check, pytype in _TYPE_CHECKS:
  *         try:             # <<<<<<<<<<<<<<
@@ -17502,7 +17509,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1109
+    /* "src/lxml/lxml.objectify.pyx":1112
  *         return StringElement
  * 
  *     for type_check, pytype in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -17512,7 +17519,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1115
+  /* "src/lxml/lxml.objectify.pyx":1118
  *         except IGNORABLE_ERRORS:
  *             pass
  *     return None             # <<<<<<<<<<<<<<
@@ -17524,7 +17531,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
   __pyx_r = Py_None;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1102
+  /* "src/lxml/lxml.objectify.pyx":1105
  *     return defaulttype
  * 
  * cdef object _guessElementClass(tree.xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -17550,7 +17557,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1128
+/* "src/lxml/lxml.objectify.pyx":1131
  *     cdef bint _annotate
  * 
  *     def __call__(self, *children, **attrib):             # <<<<<<<<<<<<<<
@@ -17615,7 +17622,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__call__", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1135
+  /* "src/lxml/lxml.objectify.pyx":1138
  *         cdef bint has_children
  *         cdef bint has_string_value
  *         if self._element_factory is None:             # <<<<<<<<<<<<<<
@@ -17626,7 +17633,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1136
+    /* "src/lxml/lxml.objectify.pyx":1139
  *         cdef bint has_string_value
  *         if self._element_factory is None:
  *             element = _makeElement(self._tag, None, attrib, self._nsmap)             # <<<<<<<<<<<<<<
@@ -17637,14 +17644,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __Pyx_INCREF(__pyx_t_3);
     __pyx_t_4 = __pyx_v_self->_nsmap;
     __Pyx_INCREF(__pyx_t_4);
-    __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_t_3, Py_None, __pyx_v_attrib, __pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_t_3, Py_None, __pyx_v_attrib, __pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_v_element = ((struct LxmlElement *)__pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1135
+    /* "src/lxml/lxml.objectify.pyx":1138
  *         cdef bint has_children
  *         cdef bint has_string_value
  *         if self._element_factory is None:             # <<<<<<<<<<<<<<
@@ -17654,7 +17661,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     goto __pyx_L3;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1138
+  /* "src/lxml/lxml.objectify.pyx":1141
  *             element = _makeElement(self._tag, None, attrib, self._nsmap)
  *         else:
  *             element = self._element_factory(self._tag, attrib, self._nsmap)             # <<<<<<<<<<<<<<
@@ -17675,7 +17682,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_3) {
       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
@@ -17689,17 +17696,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __Pyx_INCREF(__pyx_v_self->_nsmap);
     __Pyx_GIVEREF(__pyx_v_self->_nsmap);
     PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_self->_nsmap);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_element = ((struct LxmlElement *)__pyx_t_5);
     __pyx_t_5 = 0;
   }
   __pyx_L3:;
 
-  /* "src/lxml/lxml.objectify.pyx":1140
+  /* "src/lxml/lxml.objectify.pyx":1143
  *             element = self._element_factory(self._tag, attrib, self._nsmap)
  * 
  *         pytype_name = None             # <<<<<<<<<<<<<<
@@ -17709,7 +17716,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   __Pyx_INCREF(Py_None);
   __pyx_v_pytype_name = Py_None;
 
-  /* "src/lxml/lxml.objectify.pyx":1141
+  /* "src/lxml/lxml.objectify.pyx":1144
  * 
  *         pytype_name = None
  *         has_children = False             # <<<<<<<<<<<<<<
@@ -17718,7 +17725,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
   __pyx_v_has_children = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1142
+  /* "src/lxml/lxml.objectify.pyx":1145
  *         pytype_name = None
  *         has_children = False
  *         has_string_value = False             # <<<<<<<<<<<<<<
@@ -17727,7 +17734,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
   __pyx_v_has_string_value = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1143
+  /* "src/lxml/lxml.objectify.pyx":1146
  *         has_children = False
  *         has_string_value = False
  *         for child in children:             # <<<<<<<<<<<<<<
@@ -17738,15 +17745,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   for (;;) {
     if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
     #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     #else
-    __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     #endif
     __Pyx_XDECREF_SET(__pyx_v_child, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1144
+    /* "src/lxml/lxml.objectify.pyx":1147
  *         has_string_value = False
  *         for child in children:
  *             if child is None:             # <<<<<<<<<<<<<<
@@ -17757,18 +17764,18 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/lxml.objectify.pyx":1145
+      /* "src/lxml/lxml.objectify.pyx":1148
  *         for child in children:
  *             if child is None:
  *                 if len(children) == 1:             # <<<<<<<<<<<<<<
  *                     cetree.setAttributeValue(
  *                         element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
  */
-      __pyx_t_8 = PyTuple_GET_SIZE(__pyx_v_children); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyTuple_GET_SIZE(__pyx_v_children); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_1 = ((__pyx_t_8 == 1) != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/lxml.objectify.pyx":1147
+        /* "src/lxml/lxml.objectify.pyx":1150
  *                 if len(children) == 1:
  *                     cetree.setAttributeValue(
  *                         element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")             # <<<<<<<<<<<<<<
@@ -17778,17 +17785,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         __pyx_t_4 = __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NIL_ATTR;
         __Pyx_INCREF(__pyx_t_4);
 
-        /* "src/lxml/lxml.objectify.pyx":1146
+        /* "src/lxml/lxml.objectify.pyx":1149
  *             if child is None:
  *                 if len(children) == 1:
  *                     cetree.setAttributeValue(             # <<<<<<<<<<<<<<
  *                         element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
  *             elif python._isString(child):
  */
-        __pyx_t_9 = setAttributeValue(__pyx_v_element, __pyx_t_4, __pyx_n_u_true); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_9 = setAttributeValue(__pyx_v_element, __pyx_t_4, __pyx_n_u_true); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1145
+        /* "src/lxml/lxml.objectify.pyx":1148
  *         for child in children:
  *             if child is None:
  *                 if len(children) == 1:             # <<<<<<<<<<<<<<
@@ -17797,7 +17804,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1144
+      /* "src/lxml/lxml.objectify.pyx":1147
  *         has_string_value = False
  *         for child in children:
  *             if child is None:             # <<<<<<<<<<<<<<
@@ -17807,7 +17814,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       goto __pyx_L6;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1148
+    /* "src/lxml/lxml.objectify.pyx":1151
  *                     cetree.setAttributeValue(
  *                         element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
  *             elif python._isString(child):             # <<<<<<<<<<<<<<
@@ -17817,18 +17824,18 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __pyx_t_1 = (_isString(__pyx_v_child) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/lxml.objectify.pyx":1149
+      /* "src/lxml/lxml.objectify.pyx":1152
  *                         element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
  *             elif python._isString(child):
  *                 _add_text(element, child)             # <<<<<<<<<<<<<<
  *                 has_string_value = True
  *             elif isinstance(child, _Element):
  */
-      __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_v_child); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_v_child); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1150
+      /* "src/lxml/lxml.objectify.pyx":1153
  *             elif python._isString(child):
  *                 _add_text(element, child)
  *                 has_string_value = True             # <<<<<<<<<<<<<<
@@ -17837,7 +17844,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
       __pyx_v_has_string_value = 1;
 
-      /* "src/lxml/lxml.objectify.pyx":1148
+      /* "src/lxml/lxml.objectify.pyx":1151
  *                     cetree.setAttributeValue(
  *                         element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
  *             elif python._isString(child):             # <<<<<<<<<<<<<<
@@ -17847,7 +17854,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       goto __pyx_L6;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1151
+    /* "src/lxml/lxml.objectify.pyx":1154
  *                 _add_text(element, child)
  *                 has_string_value = True
  *             elif isinstance(child, _Element):             # <<<<<<<<<<<<<<
@@ -17858,16 +17865,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/lxml.objectify.pyx":1152
+      /* "src/lxml/lxml.objectify.pyx":1155
  *                 has_string_value = True
  *             elif isinstance(child, _Element):
  *                 cetree.appendChildToElement(element, <_Element>child)             # <<<<<<<<<<<<<<
  *                 has_children = True
  *             elif isinstance(child, _ObjectifyElementMakerCaller):
  */
-      __pyx_t_9 = appendChildToElement(__pyx_v_element, ((struct LxmlElement *)__pyx_v_child)); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = appendChildToElement(__pyx_v_element, ((struct LxmlElement *)__pyx_v_child)); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/lxml.objectify.pyx":1153
+      /* "src/lxml/lxml.objectify.pyx":1156
  *             elif isinstance(child, _Element):
  *                 cetree.appendChildToElement(element, <_Element>child)
  *                 has_children = True             # <<<<<<<<<<<<<<
@@ -17876,7 +17883,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
       __pyx_v_has_children = 1;
 
-      /* "src/lxml/lxml.objectify.pyx":1151
+      /* "src/lxml/lxml.objectify.pyx":1154
  *                 _add_text(element, child)
  *                 has_string_value = True
  *             elif isinstance(child, _Element):             # <<<<<<<<<<<<<<
@@ -17886,7 +17893,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       goto __pyx_L6;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1154
+    /* "src/lxml/lxml.objectify.pyx":1157
  *                 cetree.appendChildToElement(element, <_Element>child)
  *                 has_children = True
  *             elif isinstance(child, _ObjectifyElementMakerCaller):             # <<<<<<<<<<<<<<
@@ -17897,7 +17904,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/lxml.objectify.pyx":1155
+      /* "src/lxml/lxml.objectify.pyx":1158
  *                 has_children = True
  *             elif isinstance(child, _ObjectifyElementMakerCaller):
  *                 elementMaker = <_ObjectifyElementMakerCaller>child             # <<<<<<<<<<<<<<
@@ -17909,7 +17916,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       __Pyx_XDECREF_SET(__pyx_v_elementMaker, ((struct __pyx_obj_4lxml_9objectify__ObjectifyElementMakerCaller *)__pyx_t_4));
       __pyx_t_4 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1156
+      /* "src/lxml/lxml.objectify.pyx":1159
  *             elif isinstance(child, _ObjectifyElementMakerCaller):
  *                 elementMaker = <_ObjectifyElementMakerCaller>child
  *                 if elementMaker._element_factory is None:             # <<<<<<<<<<<<<<
@@ -17920,7 +17927,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       __pyx_t_2 = (__pyx_t_1 != 0);
       if (__pyx_t_2) {
 
-        /* "src/lxml/lxml.objectify.pyx":1157
+        /* "src/lxml/lxml.objectify.pyx":1160
  *                 elementMaker = <_ObjectifyElementMakerCaller>child
  *                 if elementMaker._element_factory is None:
  *                     cetree.makeSubElement(element, elementMaker._tag,             # <<<<<<<<<<<<<<
@@ -17930,19 +17937,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         __pyx_t_4 = __pyx_v_elementMaker->_tag;
         __Pyx_INCREF(__pyx_t_4);
 
-        /* "src/lxml/lxml.objectify.pyx":1158
+        /* "src/lxml/lxml.objectify.pyx":1161
  *                 if elementMaker._element_factory is None:
  *                     cetree.makeSubElement(element, elementMaker._tag,
  *                                           None, None, None, None)             # <<<<<<<<<<<<<<
  *                 else:
  *                     childElement = elementMaker._element_factory(
  */
-        __pyx_t_7 = ((PyObject *)makeSubElement(__pyx_v_element, __pyx_t_4, Py_None, Py_None, Py_None, Py_None)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = ((PyObject *)makeSubElement(__pyx_v_element, __pyx_t_4, Py_None, Py_None, Py_None, Py_None)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1156
+        /* "src/lxml/lxml.objectify.pyx":1159
  *             elif isinstance(child, _ObjectifyElementMakerCaller):
  *                 elementMaker = <_ObjectifyElementMakerCaller>child
  *                 if elementMaker._element_factory is None:             # <<<<<<<<<<<<<<
@@ -17952,7 +17959,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         goto __pyx_L8;
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1160
+      /* "src/lxml/lxml.objectify.pyx":1163
  *                                           None, None, None, None)
  *                 else:
  *                     childElement = elementMaker._element_factory(             # <<<<<<<<<<<<<<
@@ -17961,7 +17968,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
       /*else*/ {
 
-        /* "src/lxml/lxml.objectify.pyx":1161
+        /* "src/lxml/lxml.objectify.pyx":1164
  *                 else:
  *                     childElement = elementMaker._element_factory(
  *                         elementMaker._tag)             # <<<<<<<<<<<<<<
@@ -17980,44 +17987,44 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           }
         }
         if (!__pyx_t_3) {
-          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_elementMaker->_tag); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_elementMaker->_tag); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
         } else {
-          __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_10);
           __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
           __Pyx_INCREF(__pyx_v_elementMaker->_tag);
           __Pyx_GIVEREF(__pyx_v_elementMaker->_tag);
           PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_elementMaker->_tag);
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         }
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1160
+        /* "src/lxml/lxml.objectify.pyx":1163
  *                                           None, None, None, None)
  *                 else:
  *                     childElement = elementMaker._element_factory(             # <<<<<<<<<<<<<<
  *                         elementMaker._tag)
  *                     cetree.appendChildToElement(element, childElement)
  */
-        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_XDECREF_SET(__pyx_v_childElement, ((struct LxmlElement *)__pyx_t_7));
         __pyx_t_7 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1162
+        /* "src/lxml/lxml.objectify.pyx":1165
  *                     childElement = elementMaker._element_factory(
  *                         elementMaker._tag)
  *                     cetree.appendChildToElement(element, childElement)             # <<<<<<<<<<<<<<
  *                 has_children = True
  *             elif isinstance(child, dict):
  */
-        __pyx_t_9 = appendChildToElement(__pyx_v_element, __pyx_v_childElement); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_9 = appendChildToElement(__pyx_v_element, __pyx_v_childElement); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __pyx_L8:;
 
-      /* "src/lxml/lxml.objectify.pyx":1163
+      /* "src/lxml/lxml.objectify.pyx":1166
  *                         elementMaker._tag)
  *                     cetree.appendChildToElement(element, childElement)
  *                 has_children = True             # <<<<<<<<<<<<<<
@@ -18026,7 +18033,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
       __pyx_v_has_children = 1;
 
-      /* "src/lxml/lxml.objectify.pyx":1154
+      /* "src/lxml/lxml.objectify.pyx":1157
  *                 cetree.appendChildToElement(element, <_Element>child)
  *                 has_children = True
  *             elif isinstance(child, _ObjectifyElementMakerCaller):             # <<<<<<<<<<<<<<
@@ -18036,7 +18043,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       goto __pyx_L6;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1164
+    /* "src/lxml/lxml.objectify.pyx":1167
  *                     cetree.appendChildToElement(element, childElement)
  *                 has_children = True
  *             elif isinstance(child, dict):             # <<<<<<<<<<<<<<
@@ -18047,14 +18054,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/lxml.objectify.pyx":1165
+      /* "src/lxml/lxml.objectify.pyx":1168
  *                 has_children = True
  *             elif isinstance(child, dict):
  *                 for name, value in child.items():             # <<<<<<<<<<<<<<
  *                     # keyword arguments in attrib take precedence
  *                     if name in attrib:
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_10 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -18067,10 +18074,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         }
       }
       if (__pyx_t_10) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       } else {
-        __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -18078,9 +18085,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         __pyx_t_4 = __pyx_t_7; __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0;
         __pyx_t_11 = NULL;
       } else {
-        __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_11 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       for (;;) {
@@ -18088,17 +18095,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           if (likely(PyList_CheckExact(__pyx_t_4))) {
             if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_7);
             #endif
           } else {
             if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_7);
             #endif
           }
@@ -18108,7 +18115,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             break;
           }
@@ -18124,7 +18131,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           if (unlikely(size != 2)) {
             if (size > 2) __Pyx_RaiseTooManyValuesError(2);
             else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           #if CYTHON_COMPILING_IN_CPYTHON
           if (likely(PyTuple_CheckExact(sequence))) {
@@ -18137,15 +18144,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           __Pyx_INCREF(__pyx_t_10);
           __Pyx_INCREF(__pyx_t_3);
           #else
-          __pyx_t_10 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_10 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_10);
-          __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           #endif
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         } else {
           Py_ssize_t index = -1;
-          __pyx_t_12 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_12 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           __pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext;
@@ -18153,7 +18160,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           __Pyx_GOTREF(__pyx_t_10);
           index = 1; __pyx_t_3 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_3)) goto __pyx_L11_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_3);
-          if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_t_13 = NULL;
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
           goto __pyx_L12_unpacking_done;
@@ -18161,7 +18168,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
           __pyx_t_13 = NULL;
           if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_L12_unpacking_done:;
         }
         __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_10);
@@ -18169,18 +18176,18 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1167
+        /* "src/lxml/lxml.objectify.pyx":1170
  *                 for name, value in child.items():
  *                     # keyword arguments in attrib take precedence
  *                     if name in attrib:             # <<<<<<<<<<<<<<
  *                         continue
  *                     pytype = _PYTYPE_DICT.get(_typename(value))
  */
-        __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_attrib, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_attrib, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_2 = (__pyx_t_1 != 0);
         if (__pyx_t_2) {
 
-          /* "src/lxml/lxml.objectify.pyx":1168
+          /* "src/lxml/lxml.objectify.pyx":1171
  *                     # keyword arguments in attrib take precedence
  *                     if name in attrib:
  *                         continue             # <<<<<<<<<<<<<<
@@ -18189,7 +18196,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
           goto __pyx_L9_continue;
 
-          /* "src/lxml/lxml.objectify.pyx":1167
+          /* "src/lxml/lxml.objectify.pyx":1170
  *                 for name, value in child.items():
  *                     # keyword arguments in attrib take precedence
  *                     if name in attrib:             # <<<<<<<<<<<<<<
@@ -18198,7 +18205,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
         }
 
-        /* "src/lxml/lxml.objectify.pyx":1169
+        /* "src/lxml/lxml.objectify.pyx":1172
  *                     if name in attrib:
  *                         continue
  *                     pytype = _PYTYPE_DICT.get(_typename(value))             # <<<<<<<<<<<<<<
@@ -18207,17 +18214,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
         if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
-        __pyx_t_7 = __pyx_f_4lxml_9objectify__typename(__pyx_v_value); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __pyx_f_4lxml_9objectify__typename(__pyx_v_value); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_t_7, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_t_7, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1170
+        /* "src/lxml/lxml.objectify.pyx":1173
  *                         continue
  *                     pytype = _PYTYPE_DICT.get(_typename(value))
  *                     if pytype is not None:             # <<<<<<<<<<<<<<
@@ -18228,7 +18235,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         __pyx_t_1 = (__pyx_t_2 != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/lxml.objectify.pyx":1171
+          /* "src/lxml/lxml.objectify.pyx":1174
  *                     pytype = _PYTYPE_DICT.get(_typename(value))
  *                     if pytype is not None:
  *                         value = (<PyType>pytype).stringify(value)             # <<<<<<<<<<<<<<
@@ -18247,16 +18254,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
             }
           }
           if (!__pyx_t_10) {
-            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_3);
           } else {
-            __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_12);
             __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __pyx_t_10 = NULL;
             __Pyx_INCREF(__pyx_v_value);
             __Pyx_GIVEREF(__pyx_v_value);
             PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_value);
-            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_3);
             __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
           }
@@ -18264,7 +18271,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_3);
           __pyx_t_3 = 0;
 
-          /* "src/lxml/lxml.objectify.pyx":1170
+          /* "src/lxml/lxml.objectify.pyx":1173
  *                         continue
  *                     pytype = _PYTYPE_DICT.get(_typename(value))
  *                     if pytype is not None:             # <<<<<<<<<<<<<<
@@ -18274,7 +18281,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           goto __pyx_L14;
         }
 
-        /* "src/lxml/lxml.objectify.pyx":1172
+        /* "src/lxml/lxml.objectify.pyx":1175
  *                     if pytype is not None:
  *                         value = (<PyType>pytype).stringify(value)
  *                     elif not python._isString(value):             # <<<<<<<<<<<<<<
@@ -18284,25 +18291,25 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         __pyx_t_1 = ((!(_isString(__pyx_v_value) != 0)) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/lxml.objectify.pyx":1173
+          /* "src/lxml/lxml.objectify.pyx":1176
  *                         value = (<PyType>pytype).stringify(value)
  *                     elif not python._isString(value):
  *                         value = unicode(value)             # <<<<<<<<<<<<<<
  *                     cetree.setAttributeValue(element, name, value)
  *             else:
  */
-          __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __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 = 1176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_INCREF(__pyx_v_value);
           __Pyx_GIVEREF(__pyx_v_value);
           PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_value);
-          __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyUnicode_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyUnicode_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_7);
           __pyx_t_7 = 0;
 
-          /* "src/lxml/lxml.objectify.pyx":1172
+          /* "src/lxml/lxml.objectify.pyx":1175
  *                     if pytype is not None:
  *                         value = (<PyType>pytype).stringify(value)
  *                     elif not python._isString(value):             # <<<<<<<<<<<<<<
@@ -18312,16 +18319,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         }
         __pyx_L14:;
 
-        /* "src/lxml/lxml.objectify.pyx":1174
+        /* "src/lxml/lxml.objectify.pyx":1177
  *                     elif not python._isString(value):
  *                         value = unicode(value)
  *                     cetree.setAttributeValue(element, name, value)             # <<<<<<<<<<<<<<
  *             else:
  *                 if pytype_name is not None:
  */
-        __pyx_t_9 = setAttributeValue(__pyx_v_element, __pyx_v_name, __pyx_v_value); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_9 = setAttributeValue(__pyx_v_element, __pyx_v_name, __pyx_v_value); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-        /* "src/lxml/lxml.objectify.pyx":1165
+        /* "src/lxml/lxml.objectify.pyx":1168
  *                 has_children = True
  *             elif isinstance(child, dict):
  *                 for name, value in child.items():             # <<<<<<<<<<<<<<
@@ -18332,7 +18339,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1164
+      /* "src/lxml/lxml.objectify.pyx":1167
  *                     cetree.appendChildToElement(element, childElement)
  *                 has_children = True
  *             elif isinstance(child, dict):             # <<<<<<<<<<<<<<
@@ -18342,7 +18349,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       goto __pyx_L6;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1176
+    /* "src/lxml/lxml.objectify.pyx":1179
  *                     cetree.setAttributeValue(element, name, value)
  *             else:
  *                 if pytype_name is not None:             # <<<<<<<<<<<<<<
@@ -18354,7 +18361,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       __pyx_t_2 = (__pyx_t_1 != 0);
       if (__pyx_t_2) {
 
-        /* "src/lxml/lxml.objectify.pyx":1178
+        /* "src/lxml/lxml.objectify.pyx":1181
  *                 if pytype_name is not None:
  *                     # concatenation always makes the result a string
  *                     has_string_value = True             # <<<<<<<<<<<<<<
@@ -18363,7 +18370,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
         __pyx_v_has_string_value = 1;
 
-        /* "src/lxml/lxml.objectify.pyx":1176
+        /* "src/lxml/lxml.objectify.pyx":1179
  *                     cetree.setAttributeValue(element, name, value)
  *             else:
  *                 if pytype_name is not None:             # <<<<<<<<<<<<<<
@@ -18372,19 +18379,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1179
+      /* "src/lxml/lxml.objectify.pyx":1182
  *                     # concatenation always makes the result a string
  *                     has_string_value = True
  *                 pytype_name = _typename(child)             # <<<<<<<<<<<<<<
  *                 pytype = _PYTYPE_DICT.get(_typename(child))
  *                 if pytype is not None:
  */
-      __pyx_t_4 = __pyx_f_4lxml_9objectify__typename(__pyx_v_child); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __pyx_f_4lxml_9objectify__typename(__pyx_v_child); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_pytype_name, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1180
+      /* "src/lxml/lxml.objectify.pyx":1183
  *                     has_string_value = True
  *                 pytype_name = _typename(child)
  *                 pytype = _PYTYPE_DICT.get(_typename(child))             # <<<<<<<<<<<<<<
@@ -18393,17 +18400,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
       if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_t_4 = __pyx_f_4lxml_9objectify__typename(__pyx_v_child); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __pyx_f_4lxml_9objectify__typename(__pyx_v_child); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1181
+      /* "src/lxml/lxml.objectify.pyx":1184
  *                 pytype_name = _typename(child)
  *                 pytype = _PYTYPE_DICT.get(_typename(child))
  *                 if pytype is not None:             # <<<<<<<<<<<<<<
@@ -18414,7 +18421,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/lxml.objectify.pyx":1182
+        /* "src/lxml/lxml.objectify.pyx":1185
  *                 pytype = _PYTYPE_DICT.get(_typename(child))
  *                 if pytype is not None:
  *                     _add_text(element, (<PyType>pytype).stringify(child))             # <<<<<<<<<<<<<<
@@ -18433,26 +18440,26 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           }
         }
         if (!__pyx_t_3) {
-          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_child); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_child); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
         } else {
-          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); __pyx_t_3 = NULL;
           __Pyx_INCREF(__pyx_v_child);
           __Pyx_GIVEREF(__pyx_v_child);
           PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_child);
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_12, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_12, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         }
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1181
+        /* "src/lxml/lxml.objectify.pyx":1184
  *                 pytype_name = _typename(child)
  *                 pytype = _PYTYPE_DICT.get(_typename(child))
  *                 if pytype is not None:             # <<<<<<<<<<<<<<
@@ -18462,7 +18469,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         goto __pyx_L16;
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1184
+      /* "src/lxml/lxml.objectify.pyx":1187
  *                     _add_text(element, (<PyType>pytype).stringify(child))
  *                 else:
  *                     has_string_value = True             # <<<<<<<<<<<<<<
@@ -18472,32 +18479,32 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       /*else*/ {
         __pyx_v_has_string_value = 1;
 
-        /* "src/lxml/lxml.objectify.pyx":1185
+        /* "src/lxml/lxml.objectify.pyx":1188
  *                 else:
  *                     has_string_value = True
  *                     child = unicode(child)             # <<<<<<<<<<<<<<
  *                     _add_text(element, child)
  * 
  */
-        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __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 = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_INCREF(__pyx_v_child);
         __Pyx_GIVEREF(__pyx_v_child);
         PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_child);
-        __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyUnicode_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyUnicode_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_DECREF_SET(__pyx_v_child, __pyx_t_7);
         __pyx_t_7 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1186
+        /* "src/lxml/lxml.objectify.pyx":1189
  *                     has_string_value = True
  *                     child = unicode(child)
  *                     _add_text(element, child)             # <<<<<<<<<<<<<<
  * 
  *         if self._annotate and not has_children:
  */
-        __pyx_t_7 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_v_child); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_v_child); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       }
@@ -18505,7 +18512,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     }
     __pyx_L6:;
 
-    /* "src/lxml/lxml.objectify.pyx":1143
+    /* "src/lxml/lxml.objectify.pyx":1146
  *         has_children = False
  *         has_string_value = False
  *         for child in children:             # <<<<<<<<<<<<<<
@@ -18515,7 +18522,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1188
+  /* "src/lxml/lxml.objectify.pyx":1191
  *                     _add_text(element, child)
  * 
  *         if self._annotate and not has_children:             # <<<<<<<<<<<<<<
@@ -18533,7 +18540,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   __pyx_L18_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/lxml.objectify.pyx":1189
+    /* "src/lxml/lxml.objectify.pyx":1192
  * 
  *         if self._annotate and not has_children:
  *             if has_string_value:             # <<<<<<<<<<<<<<
@@ -18543,19 +18550,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __pyx_t_1 = (__pyx_v_has_string_value != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/lxml.objectify.pyx":1190
+      /* "src/lxml/lxml.objectify.pyx":1193
  *         if self._annotate and not has_children:
  *             if has_string_value:
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, u"str")             # <<<<<<<<<<<<<<
  *             elif pytype_name is not None:
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, pytype_name)
  */
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_9 = setAttributeValue(__pyx_v_element, __pyx_t_5, __pyx_n_u_str); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = setAttributeValue(__pyx_v_element, __pyx_t_5, __pyx_n_u_str); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1189
+      /* "src/lxml/lxml.objectify.pyx":1192
  * 
  *         if self._annotate and not has_children:
  *             if has_string_value:             # <<<<<<<<<<<<<<
@@ -18565,7 +18572,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       goto __pyx_L20;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1191
+    /* "src/lxml/lxml.objectify.pyx":1194
  *             if has_string_value:
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, u"str")
  *             elif pytype_name is not None:             # <<<<<<<<<<<<<<
@@ -18576,19 +18583,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/lxml.objectify.pyx":1192
+      /* "src/lxml/lxml.objectify.pyx":1195
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, u"str")
  *             elif pytype_name is not None:
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, pytype_name)             # <<<<<<<<<<<<<<
  * 
  *         return element
  */
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_9 = setAttributeValue(__pyx_v_element, __pyx_t_5, __pyx_v_pytype_name); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = setAttributeValue(__pyx_v_element, __pyx_t_5, __pyx_v_pytype_name); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1191
+      /* "src/lxml/lxml.objectify.pyx":1194
  *             if has_string_value:
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, u"str")
  *             elif pytype_name is not None:             # <<<<<<<<<<<<<<
@@ -18598,7 +18605,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     }
     __pyx_L20:;
 
-    /* "src/lxml/lxml.objectify.pyx":1188
+    /* "src/lxml/lxml.objectify.pyx":1191
  *                     _add_text(element, child)
  * 
  *         if self._annotate and not has_children:             # <<<<<<<<<<<<<<
@@ -18607,7 +18614,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1194
+  /* "src/lxml/lxml.objectify.pyx":1197
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, pytype_name)
  * 
  *         return element             # <<<<<<<<<<<<<<
@@ -18619,7 +18626,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   __pyx_r = ((PyObject *)__pyx_v_element);
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1128
+  /* "src/lxml/lxml.objectify.pyx":1131
  *     cdef bint _annotate
  * 
  *     def __call__(self, *children, **attrib):             # <<<<<<<<<<<<<<
@@ -18651,7 +18658,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1196
+/* "src/lxml/lxml.objectify.pyx":1199
  *         return element
  * 
  * cdef _add_text(_Element elem, text):             # <<<<<<<<<<<<<<
@@ -18674,7 +18681,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
   __Pyx_RefNannySetupContext("_add_text", 0);
   __Pyx_INCREF(__pyx_v_text);
 
-  /* "src/lxml/lxml.objectify.pyx":1200
+  /* "src/lxml/lxml.objectify.pyx":1203
  *     # tail text, depending on the current tree state
  *     cdef tree.xmlNode* c_child
  *     c_child = cetree.findChildBackwards(elem._c_node, 0)             # <<<<<<<<<<<<<<
@@ -18683,7 +18690,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  */
   __pyx_v_c_child = findChildBackwards(__pyx_v_elem->_c_node, 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1201
+  /* "src/lxml/lxml.objectify.pyx":1204
  *     cdef tree.xmlNode* c_child
  *     c_child = cetree.findChildBackwards(elem._c_node, 0)
  *     if c_child is not NULL:             # <<<<<<<<<<<<<<
@@ -18693,19 +18700,19 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
   __pyx_t_1 = ((__pyx_v_c_child != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/lxml.objectify.pyx":1202
+    /* "src/lxml/lxml.objectify.pyx":1205
  *     c_child = cetree.findChildBackwards(elem._c_node, 0)
  *     if c_child is not NULL:
  *         old = cetree.tailOf(c_child)             # <<<<<<<<<<<<<<
  *         if old is not None:
  *             text = old + text
  */
-    __pyx_t_2 = tailOf(__pyx_v_c_child); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = tailOf(__pyx_v_c_child); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_old = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1203
+    /* "src/lxml/lxml.objectify.pyx":1206
  *     if c_child is not NULL:
  *         old = cetree.tailOf(c_child)
  *         if old is not None:             # <<<<<<<<<<<<<<
@@ -18716,19 +18723,19 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
     __pyx_t_3 = (__pyx_t_1 != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/lxml.objectify.pyx":1204
+      /* "src/lxml/lxml.objectify.pyx":1207
  *         old = cetree.tailOf(c_child)
  *         if old is not None:
  *             text = old + text             # <<<<<<<<<<<<<<
  *         cetree.setTailText(c_child, text)
  *     else:
  */
-      __pyx_t_2 = PyNumber_Add(__pyx_v_old, __pyx_v_text); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyNumber_Add(__pyx_v_old, __pyx_v_text); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_2);
       __pyx_t_2 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1203
+      /* "src/lxml/lxml.objectify.pyx":1206
  *     if c_child is not NULL:
  *         old = cetree.tailOf(c_child)
  *         if old is not None:             # <<<<<<<<<<<<<<
@@ -18737,16 +18744,16 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1205
+    /* "src/lxml/lxml.objectify.pyx":1208
  *         if old is not None:
  *             text = old + text
  *         cetree.setTailText(c_child, text)             # <<<<<<<<<<<<<<
  *     else:
  *         old = cetree.textOf(elem._c_node)
  */
-    __pyx_t_4 = setTailText(__pyx_v_c_child, __pyx_v_text); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = setTailText(__pyx_v_c_child, __pyx_v_text); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/lxml.objectify.pyx":1201
+    /* "src/lxml/lxml.objectify.pyx":1204
  *     cdef tree.xmlNode* c_child
  *     c_child = cetree.findChildBackwards(elem._c_node, 0)
  *     if c_child is not NULL:             # <<<<<<<<<<<<<<
@@ -18756,7 +18763,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
     goto __pyx_L3;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1207
+  /* "src/lxml/lxml.objectify.pyx":1210
  *         cetree.setTailText(c_child, text)
  *     else:
  *         old = cetree.textOf(elem._c_node)             # <<<<<<<<<<<<<<
@@ -18764,12 +18771,12 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  *             text = old + text
  */
   /*else*/ {
-    __pyx_t_2 = textOf(__pyx_v_elem->_c_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = textOf(__pyx_v_elem->_c_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_old = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1208
+    /* "src/lxml/lxml.objectify.pyx":1211
  *     else:
  *         old = cetree.textOf(elem._c_node)
  *         if old is not None:             # <<<<<<<<<<<<<<
@@ -18780,19 +18787,19 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
     __pyx_t_1 = (__pyx_t_3 != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/lxml.objectify.pyx":1209
+      /* "src/lxml/lxml.objectify.pyx":1212
  *         old = cetree.textOf(elem._c_node)
  *         if old is not None:
  *             text = old + text             # <<<<<<<<<<<<<<
  *         cetree.setNodeText(elem._c_node, text)
  * 
  */
-      __pyx_t_2 = PyNumber_Add(__pyx_v_old, __pyx_v_text); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyNumber_Add(__pyx_v_old, __pyx_v_text); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_2);
       __pyx_t_2 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1208
+      /* "src/lxml/lxml.objectify.pyx":1211
  *     else:
  *         old = cetree.textOf(elem._c_node)
  *         if old is not None:             # <<<<<<<<<<<<<<
@@ -18801,18 +18808,18 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1210
+    /* "src/lxml/lxml.objectify.pyx":1213
  *         if old is not None:
  *             text = old + text
  *         cetree.setNodeText(elem._c_node, text)             # <<<<<<<<<<<<<<
  * 
  * cdef class ElementMaker:
  */
-    __pyx_t_4 = setNodeText(__pyx_v_elem->_c_node, __pyx_v_text); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = setNodeText(__pyx_v_elem->_c_node, __pyx_v_text); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_L3:;
 
-  /* "src/lxml/lxml.objectify.pyx":1196
+  /* "src/lxml/lxml.objectify.pyx":1199
  *         return element
  * 
  * cdef _add_text(_Element elem, text):             # <<<<<<<<<<<<<<
@@ -18835,7 +18842,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1243
+/* "src/lxml/lxml.objectify.pyx":1246
  *     cdef bint _annotate
  *     cdef dict _cache
  *     def __init__(self, *, namespace=None, nsmap=None, annotate=True,             # <<<<<<<<<<<<<<
@@ -18863,7 +18870,7 @@ static int __pyx_pw_4lxml_9objectify_12ElementMaker_1__init__(PyObject *__pyx_v_
     values[1] = ((PyObject *)Py_None);
     values[2] = ((PyObject *)Py_True);
 
-    /* "src/lxml/lxml.objectify.pyx":1244
+    /* "src/lxml/lxml.objectify.pyx":1247
  *     cdef dict _cache
  *     def __init__(self, *, namespace=None, nsmap=None, annotate=True,
  *                  makeelement=None):             # <<<<<<<<<<<<<<
@@ -18887,7 +18894,7 @@ static int __pyx_pw_4lxml_9objectify_12ElementMaker_1__init__(PyObject *__pyx_v_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 0) {
       goto __pyx_L5_argtuple_error;
@@ -18900,7 +18907,7 @@ static int __pyx_pw_4lxml_9objectify_12ElementMaker_1__init__(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.ElementMaker.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -18908,7 +18915,7 @@ static int __pyx_pw_4lxml_9objectify_12ElementMaker_1__init__(PyObject *__pyx_v_
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_9objectify_12ElementMaker___init__(((struct __pyx_obj_4lxml_9objectify_ElementMaker *)__pyx_v_self), __pyx_v_namespace, __pyx_v_nsmap, __pyx_v_annotate, __pyx_v_makeelement);
 
-  /* "src/lxml/lxml.objectify.pyx":1243
+  /* "src/lxml/lxml.objectify.pyx":1246
  *     cdef bint _annotate
  *     cdef dict _cache
  *     def __init__(self, *, namespace=None, nsmap=None, annotate=True,             # <<<<<<<<<<<<<<
@@ -18934,7 +18941,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   __Pyx_RefNannySetupContext("__init__", 0);
   __Pyx_INCREF(__pyx_v_nsmap);
 
-  /* "src/lxml/lxml.objectify.pyx":1245
+  /* "src/lxml/lxml.objectify.pyx":1248
  *     def __init__(self, *, namespace=None, nsmap=None, annotate=True,
  *                  makeelement=None):
  *         if nsmap is None:             # <<<<<<<<<<<<<<
@@ -18945,19 +18952,19 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1246
+    /* "src/lxml/lxml.objectify.pyx":1249
  *                  makeelement=None):
  *         if nsmap is None:
  *             nsmap = _DEFAULT_NSMAP if annotate else {}             # <<<<<<<<<<<<<<
  *         self._nsmap = nsmap
  *         self._namespace = None if namespace is None else u"{%s}" % namespace
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_2) {
       __Pyx_INCREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
       __pyx_t_3 = __pyx_v_4lxml_9objectify__DEFAULT_NSMAP;
     } else {
-      __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_3 = __pyx_t_4;
       __pyx_t_4 = 0;
@@ -18965,7 +18972,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
     __Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1245
+    /* "src/lxml/lxml.objectify.pyx":1248
  *     def __init__(self, *, namespace=None, nsmap=None, annotate=True,
  *                  makeelement=None):
  *         if nsmap is None:             # <<<<<<<<<<<<<<
@@ -18974,7 +18981,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1247
+  /* "src/lxml/lxml.objectify.pyx":1250
  *         if nsmap is None:
  *             nsmap = _DEFAULT_NSMAP if annotate else {}
  *         self._nsmap = nsmap             # <<<<<<<<<<<<<<
@@ -18987,7 +18994,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   __Pyx_DECREF(__pyx_v_self->_nsmap);
   __pyx_v_self->_nsmap = __pyx_v_nsmap;
 
-  /* "src/lxml/lxml.objectify.pyx":1248
+  /* "src/lxml/lxml.objectify.pyx":1251
  *             nsmap = _DEFAULT_NSMAP if annotate else {}
  *         self._nsmap = nsmap
  *         self._namespace = None if namespace is None else u"{%s}" % namespace             # <<<<<<<<<<<<<<
@@ -18999,7 +19006,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
     __Pyx_INCREF(Py_None);
     __pyx_t_3 = Py_None;
   } else {
-    __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_s_2, __pyx_v_namespace); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_s_2, __pyx_v_namespace); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_3 = __pyx_t_4;
     __pyx_t_4 = 0;
@@ -19010,17 +19017,17 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   __pyx_v_self->_namespace = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1249
+  /* "src/lxml/lxml.objectify.pyx":1252
  *         self._nsmap = nsmap
  *         self._namespace = None if namespace is None else u"{%s}" % namespace
  *         self._annotate = annotate             # <<<<<<<<<<<<<<
  *         if makeelement is not None:
  *             if not callable(makeelement):
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_self->_annotate = __pyx_t_2;
 
-  /* "src/lxml/lxml.objectify.pyx":1250
+  /* "src/lxml/lxml.objectify.pyx":1253
  *         self._namespace = None if namespace is None else u"{%s}" % namespace
  *         self._annotate = annotate
  *         if makeelement is not None:             # <<<<<<<<<<<<<<
@@ -19031,47 +19038,47 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/lxml.objectify.pyx":1251
+    /* "src/lxml/lxml.objectify.pyx":1254
  *         self._annotate = annotate
  *         if makeelement is not None:
  *             if not callable(makeelement):             # <<<<<<<<<<<<<<
  *                 raise TypeError(
  *                     "argument of 'makeelement' parameter must be callable, got %s" %
  */
-    __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_makeelement); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_makeelement); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/lxml.objectify.pyx":1253
+      /* "src/lxml/lxml.objectify.pyx":1256
  *             if not callable(makeelement):
  *                 raise TypeError(
  *                     "argument of 'makeelement' parameter must be callable, got %s" %             # <<<<<<<<<<<<<<
  *                     type(makeelement))
  *             self._makeelement = makeelement
  */
-      __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_argument_of_makeelement_paramete, ((PyObject *)Py_TYPE(__pyx_v_makeelement))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_argument_of_makeelement_paramete, ((PyObject *)Py_TYPE(__pyx_v_makeelement))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
 
-      /* "src/lxml/lxml.objectify.pyx":1252
+      /* "src/lxml/lxml.objectify.pyx":1255
  *         if makeelement is not None:
  *             if not callable(makeelement):
  *                 raise TypeError(             # <<<<<<<<<<<<<<
  *                     "argument of 'makeelement' parameter must be callable, got %s" %
  *                     type(makeelement))
  */
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1252; __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 = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_3);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
       __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/lxml.objectify.pyx":1251
+      /* "src/lxml/lxml.objectify.pyx":1254
  *         self._annotate = annotate
  *         if makeelement is not None:
  *             if not callable(makeelement):             # <<<<<<<<<<<<<<
@@ -19080,7 +19087,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1255
+    /* "src/lxml/lxml.objectify.pyx":1258
  *                     "argument of 'makeelement' parameter must be callable, got %s" %
  *                     type(makeelement))
  *             self._makeelement = makeelement             # <<<<<<<<<<<<<<
@@ -19093,7 +19100,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
     __Pyx_DECREF(__pyx_v_self->_makeelement);
     __pyx_v_self->_makeelement = __pyx_v_makeelement;
 
-    /* "src/lxml/lxml.objectify.pyx":1250
+    /* "src/lxml/lxml.objectify.pyx":1253
  *         self._namespace = None if namespace is None else u"{%s}" % namespace
  *         self._annotate = annotate
  *         if makeelement is not None:             # <<<<<<<<<<<<<<
@@ -19103,7 +19110,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
     goto __pyx_L4;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1257
+  /* "src/lxml/lxml.objectify.pyx":1260
  *             self._makeelement = makeelement
  *         else:
  *             self._makeelement = None             # <<<<<<<<<<<<<<
@@ -19119,14 +19126,14 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   }
   __pyx_L4:;
 
-  /* "src/lxml/lxml.objectify.pyx":1258
+  /* "src/lxml/lxml.objectify.pyx":1261
  *         else:
  *             self._makeelement = None
  *         self._cache = {}             # <<<<<<<<<<<<<<
  * 
  *     @cython.final
  */
-  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
   __Pyx_GOTREF(__pyx_v_self->_cache);
@@ -19134,7 +19141,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   __pyx_v_self->_cache = ((PyObject*)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1243
+  /* "src/lxml/lxml.objectify.pyx":1246
  *     cdef bint _annotate
  *     cdef dict _cache
  *     def __init__(self, *, namespace=None, nsmap=None, annotate=True,             # <<<<<<<<<<<<<<
@@ -19156,7 +19163,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1261
+/* "src/lxml/lxml.objectify.pyx":1264
  * 
  *     @cython.final
  *     cdef _build_element_maker(self, tag, bint caching):             # <<<<<<<<<<<<<<
@@ -19179,20 +19186,20 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_build_element_maker", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1263
+  /* "src/lxml/lxml.objectify.pyx":1266
  *     cdef _build_element_maker(self, tag, bint caching):
  *         cdef _ObjectifyElementMakerCaller element_maker
  *         element_maker = _ObjectifyElementMakerCaller.__new__(_ObjectifyElementMakerCaller)             # <<<<<<<<<<<<<<
  *         if self._namespace is not None and tag[0] != u"{":
  *             element_maker._tag = self._namespace + tag
  */
-  __pyx_t_1 = __pyx_tp_new_4lxml_9objectify__ObjectifyElementMakerCaller(((PyTypeObject *)__pyx_ptype_4lxml_9objectify__ObjectifyElementMakerCaller), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_tp_new_4lxml_9objectify__ObjectifyElementMakerCaller(((PyTypeObject *)__pyx_ptype_4lxml_9objectify__ObjectifyElementMakerCaller), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_9objectify__ObjectifyElementMakerCaller)))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_9objectify__ObjectifyElementMakerCaller)))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_element_maker = ((struct __pyx_obj_4lxml_9objectify__ObjectifyElementMakerCaller *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1264
+  /* "src/lxml/lxml.objectify.pyx":1267
  *         cdef _ObjectifyElementMakerCaller element_maker
  *         element_maker = _ObjectifyElementMakerCaller.__new__(_ObjectifyElementMakerCaller)
  *         if self._namespace is not None and tag[0] != u"{":             # <<<<<<<<<<<<<<
@@ -19206,22 +19213,22 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
     __pyx_t_2 = __pyx_t_4;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_tag, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_tag, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_kp_u__9, Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_kp_u__9, Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_2 = __pyx_t_4;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1265
+    /* "src/lxml/lxml.objectify.pyx":1268
  *         element_maker = _ObjectifyElementMakerCaller.__new__(_ObjectifyElementMakerCaller)
  *         if self._namespace is not None and tag[0] != u"{":
  *             element_maker._tag = self._namespace + tag             # <<<<<<<<<<<<<<
  *         else:
  *             element_maker._tag = tag
  */
-    __pyx_t_1 = PyNumber_Add(__pyx_v_self->_namespace, __pyx_v_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyNumber_Add(__pyx_v_self->_namespace, __pyx_v_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_GOTREF(__pyx_v_element_maker->_tag);
@@ -19229,7 +19236,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
     __pyx_v_element_maker->_tag = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1264
+    /* "src/lxml/lxml.objectify.pyx":1267
  *         cdef _ObjectifyElementMakerCaller element_maker
  *         element_maker = _ObjectifyElementMakerCaller.__new__(_ObjectifyElementMakerCaller)
  *         if self._namespace is not None and tag[0] != u"{":             # <<<<<<<<<<<<<<
@@ -19239,7 +19246,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
     goto __pyx_L3;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1267
+  /* "src/lxml/lxml.objectify.pyx":1270
  *             element_maker._tag = self._namespace + tag
  *         else:
  *             element_maker._tag = tag             # <<<<<<<<<<<<<<
@@ -19255,7 +19262,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   }
   __pyx_L3:;
 
-  /* "src/lxml/lxml.objectify.pyx":1268
+  /* "src/lxml/lxml.objectify.pyx":1271
  *         else:
  *             element_maker._tag = tag
  *         element_maker._nsmap = self._nsmap             # <<<<<<<<<<<<<<
@@ -19270,7 +19277,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   __pyx_v_element_maker->_nsmap = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1269
+  /* "src/lxml/lxml.objectify.pyx":1272
  *             element_maker._tag = tag
  *         element_maker._nsmap = self._nsmap
  *         element_maker._annotate = self._annotate             # <<<<<<<<<<<<<<
@@ -19280,7 +19287,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   __pyx_t_2 = __pyx_v_self->_annotate;
   __pyx_v_element_maker->_annotate = __pyx_t_2;
 
-  /* "src/lxml/lxml.objectify.pyx":1270
+  /* "src/lxml/lxml.objectify.pyx":1273
  *         element_maker._nsmap = self._nsmap
  *         element_maker._annotate = self._annotate
  *         element_maker._element_factory = self._makeelement             # <<<<<<<<<<<<<<
@@ -19295,7 +19302,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   __pyx_v_element_maker->_element_factory = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1271
+  /* "src/lxml/lxml.objectify.pyx":1274
  *         element_maker._annotate = self._annotate
  *         element_maker._element_factory = self._makeelement
  *         if caching:             # <<<<<<<<<<<<<<
@@ -19305,7 +19312,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   __pyx_t_2 = (__pyx_v_caching != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1272
+    /* "src/lxml/lxml.objectify.pyx":1275
  *         element_maker._element_factory = self._makeelement
  *         if caching:
  *             if len(self._cache) > 200:             # <<<<<<<<<<<<<<
@@ -19316,14 +19323,14 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
     __Pyx_INCREF(__pyx_t_1);
     if (unlikely(__pyx_t_1 == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
-    __pyx_t_5 = PyDict_Size(__pyx_t_1); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyDict_Size(__pyx_t_1); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_2 = ((__pyx_t_5 > 0xC8) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/lxml.objectify.pyx":1273
+      /* "src/lxml/lxml.objectify.pyx":1276
  *         if caching:
  *             if len(self._cache) > 200:
  *                 self._cache.clear()             # <<<<<<<<<<<<<<
@@ -19332,11 +19339,11 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  */
       if (unlikely(__pyx_v_self->_cache == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "clear");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_t_6 = __Pyx_PyDict_Clear(__pyx_v_self->_cache); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyDict_Clear(__pyx_v_self->_cache); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/lxml.objectify.pyx":1272
+      /* "src/lxml/lxml.objectify.pyx":1275
  *         element_maker._element_factory = self._makeelement
  *         if caching:
  *             if len(self._cache) > 200:             # <<<<<<<<<<<<<<
@@ -19345,7 +19352,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1274
+    /* "src/lxml/lxml.objectify.pyx":1277
  *             if len(self._cache) > 200:
  *                 self._cache.clear()
  *             self._cache[tag] = element_maker             # <<<<<<<<<<<<<<
@@ -19354,11 +19361,11 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  */
     if (unlikely(__pyx_v_self->_cache == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->_cache, __pyx_v_tag, ((PyObject *)__pyx_v_element_maker)) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(PyDict_SetItem(__pyx_v_self->_cache, __pyx_v_tag, ((PyObject *)__pyx_v_element_maker)) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/lxml.objectify.pyx":1271
+    /* "src/lxml/lxml.objectify.pyx":1274
  *         element_maker._annotate = self._annotate
  *         element_maker._element_factory = self._makeelement
  *         if caching:             # <<<<<<<<<<<<<<
@@ -19367,7 +19374,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1275
+  /* "src/lxml/lxml.objectify.pyx":1278
  *                 self._cache.clear()
  *             self._cache[tag] = element_maker
  *         return element_maker             # <<<<<<<<<<<<<<
@@ -19379,7 +19386,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   __pyx_r = ((PyObject *)__pyx_v_element_maker);
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1261
+  /* "src/lxml/lxml.objectify.pyx":1264
  * 
  *     @cython.final
  *     cdef _build_element_maker(self, tag, bint caching):             # <<<<<<<<<<<<<<
@@ -19399,7 +19406,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1277
+/* "src/lxml/lxml.objectify.pyx":1280
  *         return element_maker
  * 
  *     def __getattr__(self, tag):             # <<<<<<<<<<<<<<
@@ -19436,7 +19443,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__getattr__", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1278
+  /* "src/lxml/lxml.objectify.pyx":1281
  * 
  *     def __getattr__(self, tag):
  *         element_maker = self._cache.get(tag)             # <<<<<<<<<<<<<<
@@ -19445,14 +19452,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  */
   if (unlikely(__pyx_v_self->_cache == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->_cache, __pyx_v_tag, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->_cache, __pyx_v_tag, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element_maker = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1279
+  /* "src/lxml/lxml.objectify.pyx":1282
  *     def __getattr__(self, tag):
  *         element_maker = self._cache.get(tag)
  *         if element_maker is None:             # <<<<<<<<<<<<<<
@@ -19463,7 +19470,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/lxml.objectify.pyx":1280
+    /* "src/lxml/lxml.objectify.pyx":1283
  *         element_maker = self._cache.get(tag)
  *         if element_maker is None:
  *             if is_special_method(tag):             # <<<<<<<<<<<<<<
@@ -19482,25 +19489,25 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
       }
     }
     if (!__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
       __Pyx_INCREF(__pyx_v_tag);
       __Pyx_GIVEREF(__pyx_v_tag);
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_tag);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_3) {
 
-      /* "src/lxml/lxml.objectify.pyx":1281
+      /* "src/lxml/lxml.objectify.pyx":1284
  *         if element_maker is None:
  *             if is_special_method(tag):
  *                 return object.__getattr__(self, tag)             # <<<<<<<<<<<<<<
@@ -19508,7 +19515,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  *         return element_maker
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_builtin_object, __pyx_n_s_getattr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_builtin_object, __pyx_n_s_getattr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_6 = NULL;
       __pyx_t_7 = 0;
@@ -19522,7 +19529,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
           __pyx_t_7 = 1;
         }
       }
-      __pyx_t_5 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       if (__pyx_t_6) {
         __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
@@ -19533,7 +19540,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
       __Pyx_INCREF(__pyx_v_tag);
       __Pyx_GIVEREF(__pyx_v_tag);
       PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_7, __pyx_v_tag);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -19541,7 +19548,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
       __pyx_t_1 = 0;
       goto __pyx_L0;
 
-      /* "src/lxml/lxml.objectify.pyx":1280
+      /* "src/lxml/lxml.objectify.pyx":1283
  *         element_maker = self._cache.get(tag)
  *         if element_maker is None:
  *             if is_special_method(tag):             # <<<<<<<<<<<<<<
@@ -19550,7 +19557,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1282
+    /* "src/lxml/lxml.objectify.pyx":1285
  *             if is_special_method(tag):
  *                 return object.__getattr__(self, tag)
  *             return self._build_element_maker(tag, caching=True)             # <<<<<<<<<<<<<<
@@ -19558,13 +19565,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  * 
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_1 = __pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(__pyx_v_self, __pyx_v_tag, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(__pyx_v_self, __pyx_v_tag, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_r = __pyx_t_1;
     __pyx_t_1 = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/lxml.objectify.pyx":1279
+    /* "src/lxml/lxml.objectify.pyx":1282
  *     def __getattr__(self, tag):
  *         element_maker = self._cache.get(tag)
  *         if element_maker is None:             # <<<<<<<<<<<<<<
@@ -19573,7 +19580,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1283
+  /* "src/lxml/lxml.objectify.pyx":1286
  *                 return object.__getattr__(self, tag)
  *             return self._build_element_maker(tag, caching=True)
  *         return element_maker             # <<<<<<<<<<<<<<
@@ -19585,7 +19592,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
   __pyx_r = __pyx_v_element_maker;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1277
+  /* "src/lxml/lxml.objectify.pyx":1280
  *         return element_maker
  * 
  *     def __getattr__(self, tag):             # <<<<<<<<<<<<<<
@@ -19608,7 +19615,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1285
+/* "src/lxml/lxml.objectify.pyx":1288
  *         return element_maker
  * 
  *     def __call__(self, tag, *args, **kwargs):             # <<<<<<<<<<<<<<
@@ -19660,7 +19667,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_12ElementMaker_5__call__(PyObject *__
       }
       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, "__call__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1285; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__call__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
       goto __pyx_L5_argtuple_error;
@@ -19671,7 +19678,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_12ElementMaker_5__call__(PyObject *__
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__call__", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1285; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__call__", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __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;
@@ -19703,7 +19710,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__call__", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1286
+  /* "src/lxml/lxml.objectify.pyx":1289
  * 
  *     def __call__(self, tag, *args, **kwargs):
  *         element_maker = self._cache.get(tag)             # <<<<<<<<<<<<<<
@@ -19712,14 +19719,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
  */
   if (unlikely(__pyx_v_self->_cache == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->_cache, __pyx_v_tag, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->_cache, __pyx_v_tag, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element_maker = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1287
+  /* "src/lxml/lxml.objectify.pyx":1290
  *     def __call__(self, tag, *args, **kwargs):
  *         element_maker = self._cache.get(tag)
  *         if element_maker is None:             # <<<<<<<<<<<<<<
@@ -19730,7 +19737,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/lxml.objectify.pyx":1289
+    /* "src/lxml/lxml.objectify.pyx":1292
  *         if element_maker is None:
  *             element_maker = self._build_element_maker(
  *                 tag, caching=not is_special_method(tag))             # <<<<<<<<<<<<<<
@@ -19749,36 +19756,36 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
       }
     }
     if (!__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
       __Pyx_INCREF(__pyx_v_tag);
       __Pyx_GIVEREF(__pyx_v_tag);
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_tag);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1288
+    /* "src/lxml/lxml.objectify.pyx":1291
  *         element_maker = self._cache.get(tag)
  *         if element_maker is None:
  *             element_maker = self._build_element_maker(             # <<<<<<<<<<<<<<
  *                 tag, caching=not is_special_method(tag))
  *         return element_maker(*args, **kwargs)
  */
-    __pyx_t_1 = __pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(__pyx_v_self, __pyx_v_tag, (!__pyx_t_3)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(__pyx_v_self, __pyx_v_tag, (!__pyx_t_3)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_element_maker, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1287
+    /* "src/lxml/lxml.objectify.pyx":1290
  *     def __call__(self, tag, *args, **kwargs):
  *         element_maker = self._cache.get(tag)
  *         if element_maker is None:             # <<<<<<<<<<<<<<
@@ -19787,7 +19794,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1290
+  /* "src/lxml/lxml.objectify.pyx":1293
  *             element_maker = self._build_element_maker(
  *                 tag, caching=not is_special_method(tag))
  *         return element_maker(*args, **kwargs)             # <<<<<<<<<<<<<<
@@ -19795,13 +19802,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
  * ################################################################################
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_element_maker, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_element_maker, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1285
+  /* "src/lxml/lxml.objectify.pyx":1288
  *         return element_maker
  * 
  *     def __call__(self, tag, *args, **kwargs):             # <<<<<<<<<<<<<<
@@ -19824,7 +19831,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1297
+/* "src/lxml/lxml.objectify.pyx":1300
  * cdef bint __RECURSIVE_STR = 0 # default: off
  * 
  * def enable_recursive_str(on=True):             # <<<<<<<<<<<<<<
@@ -19865,7 +19872,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_13enable_recursive_str(PyObject *__py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "enable_recursive_str") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "enable_recursive_str") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -19878,7 +19885,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_13enable_recursive_str(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("enable_recursive_str", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("enable_recursive_str", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.enable_recursive_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -19900,17 +19907,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_12enable_recursive_str(CYTHON_UNUSED
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("enable_recursive_str", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1304
+  /* "src/lxml/lxml.objectify.pyx":1307
  *     """
  *     global __RECURSIVE_STR
  *     __RECURSIVE_STR = on             # <<<<<<<<<<<<<<
  * 
  * def dump(_Element element not None):
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_on); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_on); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_4lxml_9objectify___RECURSIVE_STR = __pyx_t_1;
 
-  /* "src/lxml/lxml.objectify.pyx":1297
+  /* "src/lxml/lxml.objectify.pyx":1300
  * cdef bint __RECURSIVE_STR = 0 # default: off
  * 
  * def enable_recursive_str(on=True):             # <<<<<<<<<<<<<<
@@ -19930,7 +19937,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12enable_recursive_str(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1306
+/* "src/lxml/lxml.objectify.pyx":1309
  *     __RECURSIVE_STR = on
  * 
  * def dump(_Element element not None):             # <<<<<<<<<<<<<<
@@ -19949,7 +19956,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_15dump(PyObject *__pyx_self, PyObject
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("dump (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_8includes_11etreepublic__Element, 0, "element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_8includes_11etreepublic__Element, 0, "element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_pf_4lxml_9objectify_14dump(__pyx_self, ((struct LxmlElement *)__pyx_v_element));
 
   /* function exit code */
@@ -19970,7 +19977,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_14dump(CYTHON_UNUSED PyObject *__pyx_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("dump", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1311
+  /* "src/lxml/lxml.objectify.pyx":1314
  *     Return a recursively generated string representation of an element.
  *     """
  *     return _dump(element, 0)             # <<<<<<<<<<<<<<
@@ -19978,13 +19985,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_14dump(CYTHON_UNUSED PyObject *__pyx_
  * cdef object _dump(_Element element, int indent):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_9objectify__dump(__pyx_v_element, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_9objectify__dump(__pyx_v_element, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1306
+  /* "src/lxml/lxml.objectify.pyx":1309
  *     __RECURSIVE_STR = on
  * 
  * def dump(_Element element not None):             # <<<<<<<<<<<<<<
@@ -20003,7 +20010,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_14dump(CYTHON_UNUSED PyObject *__pyx_
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1313
+/* "src/lxml/lxml.objectify.pyx":1316
  *     return _dump(element, 0)
  * 
  * cdef object _dump(_Element element, int indent):             # <<<<<<<<<<<<<<
@@ -20037,23 +20044,23 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_dump", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1314
+  /* "src/lxml/lxml.objectify.pyx":1317
  * 
  * cdef object _dump(_Element element, int indent):
  *     indentstr = u"    " * indent             # <<<<<<<<<<<<<<
  *     if isinstance(element, ObjectifiedDataElement):
  *         value = repr(element)
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_indent); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_indent); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyNumber_Multiply(__pyx_kp_u__10, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyNumber_Multiply(__pyx_kp_u__10, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_indentstr = ((PyObject*)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1315
+  /* "src/lxml/lxml.objectify.pyx":1318
  * cdef object _dump(_Element element, int indent):
  *     indentstr = u"    " * indent
  *     if isinstance(element, ObjectifiedDataElement):             # <<<<<<<<<<<<<<
@@ -20064,19 +20071,19 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
 
-    /* "src/lxml/lxml.objectify.pyx":1316
+    /* "src/lxml/lxml.objectify.pyx":1319
  *     indentstr = u"    " * indent
  *     if isinstance(element, ObjectifiedDataElement):
  *         value = repr(element)             # <<<<<<<<<<<<<<
  *     else:
  *         value = textOf(element._c_node)
  */
-    __pyx_t_2 = PyObject_Repr(((PyObject *)__pyx_v_element)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyObject_Repr(((PyObject *)__pyx_v_element)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_value = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1315
+    /* "src/lxml/lxml.objectify.pyx":1318
  * cdef object _dump(_Element element, int indent):
  *     indentstr = u"    " * indent
  *     if isinstance(element, ObjectifiedDataElement):             # <<<<<<<<<<<<<<
@@ -20086,7 +20093,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     goto __pyx_L3;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1318
+  /* "src/lxml/lxml.objectify.pyx":1321
  *         value = repr(element)
  *     else:
  *         value = textOf(element._c_node)             # <<<<<<<<<<<<<<
@@ -20094,12 +20101,12 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *             if not value.strip():
  */
   /*else*/ {
-    __pyx_t_2 = textOf(__pyx_v_element->_c_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = textOf(__pyx_v_element->_c_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_value = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1319
+    /* "src/lxml/lxml.objectify.pyx":1322
  *     else:
  *         value = textOf(element._c_node)
  *         if value is not None:             # <<<<<<<<<<<<<<
@@ -20110,14 +20117,14 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     __pyx_t_3 = (__pyx_t_4 != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/lxml.objectify.pyx":1320
+      /* "src/lxml/lxml.objectify.pyx":1323
  *         value = textOf(element._c_node)
  *         if value is not None:
  *             if not value.strip():             # <<<<<<<<<<<<<<
  *                 value = None
  *             else:
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_strip); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_strip); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_5 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -20130,19 +20137,19 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
         }
       }
       if (__pyx_t_5) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__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 = 1320; __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 = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_t_4 = ((!__pyx_t_3) != 0);
       if (__pyx_t_4) {
 
-        /* "src/lxml/lxml.objectify.pyx":1321
+        /* "src/lxml/lxml.objectify.pyx":1324
  *         if value is not None:
  *             if not value.strip():
  *                 value = None             # <<<<<<<<<<<<<<
@@ -20152,7 +20159,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
         __Pyx_INCREF(Py_None);
         __Pyx_DECREF_SET(__pyx_v_value, Py_None);
 
-        /* "src/lxml/lxml.objectify.pyx":1320
+        /* "src/lxml/lxml.objectify.pyx":1323
  *         value = textOf(element._c_node)
  *         if value is not None:
  *             if not value.strip():             # <<<<<<<<<<<<<<
@@ -20162,7 +20169,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
         goto __pyx_L5;
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1323
+      /* "src/lxml/lxml.objectify.pyx":1326
  *                 value = None
  *             else:
  *                 value = repr(value)             # <<<<<<<<<<<<<<
@@ -20170,14 +20177,14 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *                                     value, _typename(element))
  */
       /*else*/ {
-        __pyx_t_2 = PyObject_Repr(__pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyObject_Repr(__pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
         __pyx_t_2 = 0;
       }
       __pyx_L5:;
 
-      /* "src/lxml/lxml.objectify.pyx":1319
+      /* "src/lxml/lxml.objectify.pyx":1322
  *     else:
  *         value = textOf(element._c_node)
  *         if value is not None:             # <<<<<<<<<<<<<<
@@ -20188,34 +20195,34 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   }
   __pyx_L3:;
 
-  /* "src/lxml/lxml.objectify.pyx":1324
+  /* "src/lxml/lxml.objectify.pyx":1327
  *             else:
  *                 value = repr(value)
  *     result = u"%s%s = %s [%s]\n" % (indentstr, element.tag,             # <<<<<<<<<<<<<<
  *                                     value, _typename(element))
  *     xsi_ns    = u"{%s}" % XML_SCHEMA_INSTANCE_NS
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_tag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_tag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "src/lxml/lxml.objectify.pyx":1325
+  /* "src/lxml/lxml.objectify.pyx":1328
  *                 value = repr(value)
  *     result = u"%s%s = %s [%s]\n" % (indentstr, element.tag,
  *                                     value, _typename(element))             # <<<<<<<<<<<<<<
  *     xsi_ns    = u"{%s}" % XML_SCHEMA_INSTANCE_NS
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
  */
-  __pyx_t_1 = __pyx_f_4lxml_9objectify__typename(((PyObject *)__pyx_v_element)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_9objectify__typename(((PyObject *)__pyx_v_element)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "src/lxml/lxml.objectify.pyx":1324
+  /* "src/lxml/lxml.objectify.pyx":1327
  *             else:
  *                 value = repr(value)
  *     result = u"%s%s = %s [%s]\n" % (indentstr, element.tag,             # <<<<<<<<<<<<<<
  *                                     value, _typename(element))
  *     xsi_ns    = u"{%s}" % XML_SCHEMA_INSTANCE_NS
  */
-  __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(__pyx_v_indentstr);
   __Pyx_GIVEREF(__pyx_v_indentstr);
@@ -20229,52 +20236,52 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_1);
   __pyx_t_2 = 0;
   __pyx_t_1 = 0;
-  __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_s_s_s_s, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_s_s_s_s, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_v_result = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1326
+  /* "src/lxml/lxml.objectify.pyx":1329
  *     result = u"%s%s = %s [%s]\n" % (indentstr, element.tag,
  *                                     value, _typename(element))
  *     xsi_ns    = u"{%s}" % XML_SCHEMA_INSTANCE_NS             # <<<<<<<<<<<<<<
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
  *     for name, value in cetree.iterattributes(element, 3):
  */
-  __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_s_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_s_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_xsi_ns = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1327
+  /* "src/lxml/lxml.objectify.pyx":1330
  *                                     value, _typename(element))
  *     xsi_ns    = u"{%s}" % XML_SCHEMA_INSTANCE_NS
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE             # <<<<<<<<<<<<<<
  *     for name, value in cetree.iterattributes(element, 3):
  *         if u'{' in name:
  */
-  __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_s_2, __pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_s_2, __pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_pytype_ns = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1328
+  /* "src/lxml/lxml.objectify.pyx":1331
  *     xsi_ns    = u"{%s}" % XML_SCHEMA_INSTANCE_NS
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
  *     for name, value in cetree.iterattributes(element, 3):             # <<<<<<<<<<<<<<
  *         if u'{' in name:
  *             if name == PYTYPE_ATTRIBUTE:
  */
-  __pyx_t_1 = iterattributes(__pyx_v_element, 3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = iterattributes(__pyx_v_element, 3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
     __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
     __pyx_t_7 = NULL;
   } else {
-    __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -20282,17 +20289,17 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       if (likely(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[0]; __pyx_lineno = 1328; __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[0]; __pyx_lineno = 1331; __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[0]; __pyx_lineno = 1328; __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[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       } else {
         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[0]; __pyx_lineno = 1328; __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[0]; __pyx_lineno = 1331; __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[0]; __pyx_lineno = 1328; __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[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       }
@@ -20302,7 +20309,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -20318,7 +20325,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -20331,15 +20338,15 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       __Pyx_INCREF(__pyx_t_2);
       __Pyx_INCREF(__pyx_t_8);
       #else
-      __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
@@ -20347,7 +20354,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       __Pyx_GOTREF(__pyx_t_2);
       index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L8_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_8);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_10 = NULL;
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       goto __pyx_L9_unpacking_done;
@@ -20355,7 +20362,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       __pyx_t_10 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L9_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_2);
@@ -20363,43 +20370,43 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_8);
     __pyx_t_8 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1329
+    /* "src/lxml/lxml.objectify.pyx":1332
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
  *     for name, value in cetree.iterattributes(element, 3):
  *         if u'{' in name:             # <<<<<<<<<<<<<<
  *             if name == PYTYPE_ATTRIBUTE:
  *                 if value == TREE_PYTYPE_NAME:
  */
-    __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__9, __pyx_v_name, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__9, __pyx_v_name, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_3 = (__pyx_t_4 != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/lxml.objectify.pyx":1330
+      /* "src/lxml/lxml.objectify.pyx":1333
  *     for name, value in cetree.iterattributes(element, 3):
  *         if u'{' in name:
  *             if name == PYTYPE_ATTRIBUTE:             # <<<<<<<<<<<<<<
  *                 if value == TREE_PYTYPE_NAME:
  *                     continue
  */
-      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_8 = PyObject_RichCompare(__pyx_v_name, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyObject_RichCompare(__pyx_v_name, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       if (__pyx_t_3) {
 
-        /* "src/lxml/lxml.objectify.pyx":1331
+        /* "src/lxml/lxml.objectify.pyx":1334
  *         if u'{' in name:
  *             if name == PYTYPE_ATTRIBUTE:
  *                 if value == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
  *                     continue
  *                 else:
  */
-        __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_value, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_value, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         if (__pyx_t_3) {
 
-          /* "src/lxml/lxml.objectify.pyx":1332
+          /* "src/lxml/lxml.objectify.pyx":1335
  *             if name == PYTYPE_ATTRIBUTE:
  *                 if value == TREE_PYTYPE_NAME:
  *                     continue             # <<<<<<<<<<<<<<
@@ -20408,7 +20415,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  */
           goto __pyx_L6_continue;
 
-          /* "src/lxml/lxml.objectify.pyx":1331
+          /* "src/lxml/lxml.objectify.pyx":1334
  *         if u'{' in name:
  *             if name == PYTYPE_ATTRIBUTE:
  *                 if value == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
@@ -20417,7 +20424,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  */
         }
 
-        /* "src/lxml/lxml.objectify.pyx":1334
+        /* "src/lxml/lxml.objectify.pyx":1337
  *                     continue
  *                 else:
  *                     name = name.replace(pytype_ns, u'py:')             # <<<<<<<<<<<<<<
@@ -20425,7 +20432,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *         result += u"%s  * %s = %r\n" % (indentstr, name, value)
  */
         /*else*/ {
-          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_1);
           __pyx_t_2 = NULL;
           __pyx_t_11 = 0;
@@ -20439,7 +20446,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
               __pyx_t_11 = 1;
             }
           }
-          __pyx_t_9 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_9 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_9);
           if (__pyx_t_2) {
             __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL;
@@ -20450,7 +20457,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
           __Pyx_INCREF(__pyx_kp_u_py);
           __Pyx_GIVEREF(__pyx_kp_u_py);
           PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_11, __pyx_kp_u_py);
-          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
           __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -20458,7 +20465,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
           __pyx_t_8 = 0;
         }
 
-        /* "src/lxml/lxml.objectify.pyx":1330
+        /* "src/lxml/lxml.objectify.pyx":1333
  *     for name, value in cetree.iterattributes(element, 3):
  *         if u'{' in name:
  *             if name == PYTYPE_ATTRIBUTE:             # <<<<<<<<<<<<<<
@@ -20467,14 +20474,14 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  */
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1335
+      /* "src/lxml/lxml.objectify.pyx":1338
  *                 else:
  *                     name = name.replace(pytype_ns, u'py:')
  *             name = name.replace(xsi_ns, u'xsi:')             # <<<<<<<<<<<<<<
  *         result += u"%s  * %s = %r\n" % (indentstr, name, value)
  * 
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_9 = NULL;
       __pyx_t_11 = 0;
@@ -20488,7 +20495,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
           __pyx_t_11 = 1;
         }
       }
-      __pyx_t_2 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       if (__pyx_t_9) {
         __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_9); __pyx_t_9 = NULL;
@@ -20499,14 +20506,14 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       __Pyx_INCREF(__pyx_kp_u_xsi);
       __Pyx_GIVEREF(__pyx_kp_u_xsi);
       PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_11, __pyx_kp_u_xsi);
-      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_8);
       __pyx_t_8 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1329
+      /* "src/lxml/lxml.objectify.pyx":1332
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
  *     for name, value in cetree.iterattributes(element, 3):
  *         if u'{' in name:             # <<<<<<<<<<<<<<
@@ -20515,14 +20522,14 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1336
+    /* "src/lxml/lxml.objectify.pyx":1339
  *                     name = name.replace(pytype_ns, u'py:')
  *             name = name.replace(xsi_ns, u'xsi:')
  *         result += u"%s  * %s = %r\n" % (indentstr, name, value)             # <<<<<<<<<<<<<<
  * 
  *     indent += 1
  */
-    __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_INCREF(__pyx_v_indentstr);
     __Pyx_GIVEREF(__pyx_v_indentstr);
@@ -20533,16 +20540,16 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     __Pyx_INCREF(__pyx_v_value);
     __Pyx_GIVEREF(__pyx_v_value);
     PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_value);
-    __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_s_s_r, __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_s_s_r, __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_t_8 = __Pyx_PyUnicode_ConcatSafe(__pyx_v_result, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyUnicode_ConcatSafe(__pyx_v_result, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_8);
     __pyx_t_8 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1328
+    /* "src/lxml/lxml.objectify.pyx":1331
  *     xsi_ns    = u"{%s}" % XML_SCHEMA_INSTANCE_NS
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
  *     for name, value in cetree.iterattributes(element, 3):             # <<<<<<<<<<<<<<
@@ -20553,7 +20560,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1338
+  /* "src/lxml/lxml.objectify.pyx":1341
  *         result += u"%s  * %s = %r\n" % (indentstr, name, value)
  * 
  *     indent += 1             # <<<<<<<<<<<<<<
@@ -20562,14 +20569,14 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  */
   __pyx_v_indent = (__pyx_v_indent + 1);
 
-  /* "src/lxml/lxml.objectify.pyx":1339
+  /* "src/lxml/lxml.objectify.pyx":1342
  * 
  *     indent += 1
  *     for child in element.iterchildren():             # <<<<<<<<<<<<<<
  *         result += _dump(child, indent)
  *     if indent == 1:
  */
-  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_iterchildren); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_iterchildren); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   __pyx_t_1 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
@@ -20582,10 +20589,10 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     }
   }
   if (__pyx_t_1) {
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
-    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -20593,9 +20600,9 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     __pyx_t_8 = __pyx_t_5; __Pyx_INCREF(__pyx_t_8); __pyx_t_6 = 0;
     __pyx_t_7 = NULL;
   } else {
-    __pyx_t_6 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_7 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   for (;;) {
@@ -20603,17 +20610,17 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       if (likely(PyList_CheckExact(__pyx_t_8))) {
         if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_8)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_8, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PySequence_ITEM(__pyx_t_8, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         #endif
       } else {
         if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_8, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PySequence_ITEM(__pyx_t_8, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         #endif
       }
@@ -20623,7 +20630,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -20632,23 +20639,23 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     __Pyx_XDECREF_SET(__pyx_v_child, __pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1340
+    /* "src/lxml/lxml.objectify.pyx":1343
  *     indent += 1
  *     for child in element.iterchildren():
  *         result += _dump(child, indent)             # <<<<<<<<<<<<<<
  *     if indent == 1:
  *         return result[:-1] # strip last '\n'
  */
-    if (!(likely(((__pyx_v_child) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_child, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_5 = __pyx_f_4lxml_9objectify__dump(((struct LxmlElement *)__pyx_v_child), __pyx_v_indent); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_v_child) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_child, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __pyx_f_4lxml_9objectify__dump(((struct LxmlElement *)__pyx_v_child), __pyx_v_indent); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1339
+    /* "src/lxml/lxml.objectify.pyx":1342
  * 
  *     indent += 1
  *     for child in element.iterchildren():             # <<<<<<<<<<<<<<
@@ -20658,7 +20665,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   }
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1341
+  /* "src/lxml/lxml.objectify.pyx":1344
  *     for child in element.iterchildren():
  *         result += _dump(child, indent)
  *     if indent == 1:             # <<<<<<<<<<<<<<
@@ -20668,7 +20675,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   __pyx_t_3 = ((__pyx_v_indent == 1) != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/lxml.objectify.pyx":1342
+    /* "src/lxml/lxml.objectify.pyx":1345
  *         result += _dump(child, indent)
  *     if indent == 1:
  *         return result[:-1] # strip last '\n'             # <<<<<<<<<<<<<<
@@ -20676,13 +20683,13 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *         return result
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_v_result, 0, -1L, NULL, NULL, &__pyx_slice__11, 0, 1, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_v_result, 0, -1L, NULL, NULL, &__pyx_slice__11, 0, 1, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_r = __pyx_t_8;
     __pyx_t_8 = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/lxml.objectify.pyx":1341
+    /* "src/lxml/lxml.objectify.pyx":1344
  *     for child in element.iterchildren():
  *         result += _dump(child, indent)
  *     if indent == 1:             # <<<<<<<<<<<<<<
@@ -20691,7 +20698,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1344
+  /* "src/lxml/lxml.objectify.pyx":1347
  *         return result[:-1] # strip last '\n'
  *     else:
  *         return result             # <<<<<<<<<<<<<<
@@ -20705,7 +20712,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     goto __pyx_L0;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1313
+  /* "src/lxml/lxml.objectify.pyx":1316
  *     return _dump(element, 0)
  * 
  * cdef object _dump(_Element element, int indent):             # <<<<<<<<<<<<<<
@@ -20735,7 +20742,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1350
+/* "src/lxml/lxml.objectify.pyx":1353
  * # Pickle support for objectified ElementTree
  * 
  * def __unpickleElementTree(data):             # <<<<<<<<<<<<<<
@@ -20771,7 +20778,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__unpickleElementTree", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1351
+  /* "src/lxml/lxml.objectify.pyx":1354
  * 
  * def __unpickleElementTree(data):
  *     return etree.ElementTree(fromstring(data))             # <<<<<<<<<<<<<<
@@ -20779,9 +20786,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED
  * cdef _setupPickle(elementTreeReduceFunction):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_ElementTree); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_ElementTree); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_fromstring); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_fromstring); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -20794,16 +20801,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED
     }
   }
   if (!__pyx_t_5) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_data); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_data); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
   } else {
-    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
     __Pyx_INCREF(__pyx_v_data);
     __Pyx_GIVEREF(__pyx_v_data);
     PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_data);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
@@ -20819,17 +20826,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED
     }
   }
   if (!__pyx_t_4) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
@@ -20838,7 +20845,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1350
+  /* "src/lxml/lxml.objectify.pyx":1353
  * # Pickle support for objectified ElementTree
  * 
  * def __unpickleElementTree(data):             # <<<<<<<<<<<<<<
@@ -20862,7 +20869,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1353
+/* "src/lxml/lxml.objectify.pyx":1356
  *     return etree.ElementTree(fromstring(data))
  * 
  * cdef _setupPickle(elementTreeReduceFunction):             # <<<<<<<<<<<<<<
@@ -20887,7 +20894,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_setupPickle", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1354
+  /* "src/lxml/lxml.objectify.pyx":1357
  * 
  * cdef _setupPickle(elementTreeReduceFunction):
  *     if python.IS_PYTHON3:             # <<<<<<<<<<<<<<
@@ -20897,19 +20904,19 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
   __pyx_t_1 = (IS_PYTHON3 != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/lxml.objectify.pyx":1355
+    /* "src/lxml/lxml.objectify.pyx":1358
  * cdef _setupPickle(elementTreeReduceFunction):
  *     if python.IS_PYTHON3:
  *         import copyreg             # <<<<<<<<<<<<<<
  *     else:
  *         import copy_reg as copyreg
  */
-    __pyx_t_2 = __Pyx_Import(__pyx_n_s_copyreg, 0, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_Import(__pyx_n_s_copyreg, 0, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_copyreg = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1354
+    /* "src/lxml/lxml.objectify.pyx":1357
  * 
  * cdef _setupPickle(elementTreeReduceFunction):
  *     if python.IS_PYTHON3:             # <<<<<<<<<<<<<<
@@ -20919,7 +20926,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
     goto __pyx_L3;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1357
+  /* "src/lxml/lxml.objectify.pyx":1360
  *         import copyreg
  *     else:
  *         import copy_reg as copyreg             # <<<<<<<<<<<<<<
@@ -20927,33 +20934,33 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
  *                    elementTreeReduceFunction, __unpickleElementTree)
  */
   /*else*/ {
-    __pyx_t_2 = __Pyx_Import(__pyx_n_s_copy_reg, 0, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_Import(__pyx_n_s_copy_reg, 0, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_copyreg = __pyx_t_2;
     __pyx_t_2 = 0;
   }
   __pyx_L3:;
 
-  /* "src/lxml/lxml.objectify.pyx":1358
+  /* "src/lxml/lxml.objectify.pyx":1361
  *     else:
  *         import copy_reg as copyreg
  *     copyreg.pickle(etree._ElementTree,             # <<<<<<<<<<<<<<
  *                    elementTreeReduceFunction, __unpickleElementTree)
  * 
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_copyreg, __pyx_n_s_pickle); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_copyreg, __pyx_n_s_pickle); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_ElementTree_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_ElementTree_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
 
-  /* "src/lxml/lxml.objectify.pyx":1359
+  /* "src/lxml/lxml.objectify.pyx":1362
  *         import copy_reg as copyreg
  *     copyreg.pickle(etree._ElementTree,
  *                    elementTreeReduceFunction, __unpickleElementTree)             # <<<<<<<<<<<<<<
  * 
  * def pickleReduceElementTree(obj):
  */
-  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_unpickleElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_unpickleElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
   __pyx_t_7 = 0;
@@ -20967,7 +20974,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
       __pyx_t_7 = 1;
     }
   }
-  __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   if (__pyx_t_6) {
     __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
@@ -20981,13 +20988,13 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
   PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_5);
   __pyx_t_4 = 0;
   __pyx_t_5 = 0;
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1353
+  /* "src/lxml/lxml.objectify.pyx":1356
  *     return etree.ElementTree(fromstring(data))
  * 
  * cdef _setupPickle(elementTreeReduceFunction):             # <<<<<<<<<<<<<<
@@ -21014,7 +21021,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1361
+/* "src/lxml/lxml.objectify.pyx":1364
  *                    elementTreeReduceFunction, __unpickleElementTree)
  * 
  * def pickleReduceElementTree(obj):             # <<<<<<<<<<<<<<
@@ -21049,7 +21056,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18pickleReduceElementTree(CYTHON_UNUS
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("pickleReduceElementTree", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1362
+  /* "src/lxml/lxml.objectify.pyx":1365
  * 
  * def pickleReduceElementTree(obj):
  *     return (__unpickleElementTree, (etree.tostring(obj),))             # <<<<<<<<<<<<<<
@@ -21057,9 +21064,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_18pickleReduceElementTree(CYTHON_UNUS
  * _setupPickle(pickleReduceElementTree)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_unpickleElementTree); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_unpickleElementTree); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_tostring); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_tostring); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -21072,26 +21079,26 @@ static PyObject *__pyx_pf_4lxml_9objectify_18pickleReduceElementTree(CYTHON_UNUS
     }
   }
   if (!__pyx_t_4) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_obj); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_obj); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
   } else {
-    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
     __Pyx_INCREF(__pyx_v_obj);
     __Pyx_GIVEREF(__pyx_v_obj);
     PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_obj);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1362; __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 = 1365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
   __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
@@ -21103,7 +21110,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18pickleReduceElementTree(CYTHON_UNUS
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1361
+  /* "src/lxml/lxml.objectify.pyx":1364
  *                    elementTreeReduceFunction, __unpickleElementTree)
  * 
  * def pickleReduceElementTree(obj):             # <<<<<<<<<<<<<<
@@ -21126,7 +21133,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18pickleReduceElementTree(CYTHON_UNUS
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1376
+/* "src/lxml/lxml.objectify.pyx":1379
  *     cdef object empty_data_class
  *     cdef object tree_class
  *     def __init__(self, tree_class=None, empty_data_class=None):             # <<<<<<<<<<<<<<
@@ -21177,7 +21184,7 @@ static int __pyx_pw_4lxml_9objectify_27ObjectifyElementClassLookup_1__init__(PyO
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1376; __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[0]; __pyx_lineno = 1379; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -21192,7 +21199,7 @@ static int __pyx_pw_4lxml_9objectify_27ObjectifyElementClassLookup_1__init__(PyO
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1376; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1379; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.ObjectifyElementClassLookup.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -21214,7 +21221,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
   __Pyx_INCREF(__pyx_v_tree_class);
   __Pyx_INCREF(__pyx_v_empty_data_class);
 
-  /* "src/lxml/lxml.objectify.pyx":1385
+  /* "src/lxml/lxml.objectify.pyx":1388
  *         empty data elements (defauls to StringElement).
  *         """
  *         self._lookup_function = _lookupElementClass             # <<<<<<<<<<<<<<
@@ -21223,7 +21230,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
  */
   __pyx_v_self->__pyx_base._lookup_function = __pyx_f_4lxml_9objectify__lookupElementClass;
 
-  /* "src/lxml/lxml.objectify.pyx":1386
+  /* "src/lxml/lxml.objectify.pyx":1389
  *         """
  *         self._lookup_function = _lookupElementClass
  *         if tree_class is None:             # <<<<<<<<<<<<<<
@@ -21234,7 +21241,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1387
+    /* "src/lxml/lxml.objectify.pyx":1390
  *         self._lookup_function = _lookupElementClass
  *         if tree_class is None:
  *             tree_class = ObjectifiedElement             # <<<<<<<<<<<<<<
@@ -21244,7 +21251,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
     __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
     __Pyx_DECREF_SET(__pyx_v_tree_class, ((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
 
-    /* "src/lxml/lxml.objectify.pyx":1386
+    /* "src/lxml/lxml.objectify.pyx":1389
  *         """
  *         self._lookup_function = _lookupElementClass
  *         if tree_class is None:             # <<<<<<<<<<<<<<
@@ -21253,7 +21260,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1388
+  /* "src/lxml/lxml.objectify.pyx":1391
  *         if tree_class is None:
  *             tree_class = ObjectifiedElement
  *         self.tree_class = tree_class             # <<<<<<<<<<<<<<
@@ -21266,7 +21273,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
   __Pyx_DECREF(__pyx_v_self->tree_class);
   __pyx_v_self->tree_class = __pyx_v_tree_class;
 
-  /* "src/lxml/lxml.objectify.pyx":1389
+  /* "src/lxml/lxml.objectify.pyx":1392
  *             tree_class = ObjectifiedElement
  *         self.tree_class = tree_class
  *         if empty_data_class is None:             # <<<<<<<<<<<<<<
@@ -21277,7 +21284,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/lxml.objectify.pyx":1390
+    /* "src/lxml/lxml.objectify.pyx":1393
  *         self.tree_class = tree_class
  *         if empty_data_class is None:
  *             empty_data_class = StringElement             # <<<<<<<<<<<<<<
@@ -21287,7 +21294,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
     __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
     __Pyx_DECREF_SET(__pyx_v_empty_data_class, ((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
 
-    /* "src/lxml/lxml.objectify.pyx":1389
+    /* "src/lxml/lxml.objectify.pyx":1392
  *             tree_class = ObjectifiedElement
  *         self.tree_class = tree_class
  *         if empty_data_class is None:             # <<<<<<<<<<<<<<
@@ -21296,7 +21303,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1391
+  /* "src/lxml/lxml.objectify.pyx":1394
  *         if empty_data_class is None:
  *             empty_data_class = StringElement
  *         self.empty_data_class = empty_data_class             # <<<<<<<<<<<<<<
@@ -21309,7 +21316,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
   __Pyx_DECREF(__pyx_v_self->empty_data_class);
   __pyx_v_self->empty_data_class = __pyx_v_empty_data_class;
 
-  /* "src/lxml/lxml.objectify.pyx":1376
+  /* "src/lxml/lxml.objectify.pyx":1379
  *     cdef object empty_data_class
  *     cdef object tree_class
  *     def __init__(self, tree_class=None, empty_data_class=None):             # <<<<<<<<<<<<<<
@@ -21325,7 +21332,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1393
+/* "src/lxml/lxml.objectify.pyx":1396
  *         self.empty_data_class = empty_data_class
  * 
  * cdef object _lookupElementClass(state, _Document doc, tree.xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -21355,7 +21362,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_lookupElementClass", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1395
+  /* "src/lxml/lxml.objectify.pyx":1398
  * cdef object _lookupElementClass(state, _Document doc, tree.xmlNode* c_node):
  *     cdef ObjectifyElementClassLookup lookup
  *     lookup = <ObjectifyElementClassLookup>state             # <<<<<<<<<<<<<<
@@ -21367,7 +21374,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   __pyx_v_lookup = ((struct __pyx_obj_4lxml_9objectify_ObjectifyElementClassLookup *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1397
+  /* "src/lxml/lxml.objectify.pyx":1400
  *     lookup = <ObjectifyElementClassLookup>state
  *     # if element has children => no data class
  *     if cetree.hasChild(c_node):             # <<<<<<<<<<<<<<
@@ -21377,7 +21384,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   __pyx_t_2 = (hasChild(__pyx_v_c_node) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1398
+    /* "src/lxml/lxml.objectify.pyx":1401
  *     # if element has children => no data class
  *     if cetree.hasChild(c_node):
  *         return lookup.tree_class             # <<<<<<<<<<<<<<
@@ -21389,7 +21396,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_r = __pyx_v_lookup->tree_class;
     goto __pyx_L0;
 
-    /* "src/lxml/lxml.objectify.pyx":1397
+    /* "src/lxml/lxml.objectify.pyx":1400
  *     lookup = <ObjectifyElementClassLookup>state
  *     # if element has children => no data class
  *     if cetree.hasChild(c_node):             # <<<<<<<<<<<<<<
@@ -21398,20 +21405,20 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1401
+  /* "src/lxml/lxml.objectify.pyx":1404
  * 
  *     # if element is defined as xsi:nil, return NoneElement class
  *     if u"true" == cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"nil"):
  *         return NoneElement
  */
-  __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)__pyx_k_nil))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)__pyx_k_nil))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_n_u_true, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_n_u_true, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1403
+    /* "src/lxml/lxml.objectify.pyx":1406
  *     if u"true" == cetree.attributeValueFromNsName(
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"nil"):
  *         return NoneElement             # <<<<<<<<<<<<<<
@@ -21423,7 +21430,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_r = ((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement);
     goto __pyx_L0;
 
-    /* "src/lxml/lxml.objectify.pyx":1401
+    /* "src/lxml/lxml.objectify.pyx":1404
  * 
  *     # if element is defined as xsi:nil, return NoneElement class
  *     if u"true" == cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
@@ -21432,19 +21439,19 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1406
+  /* "src/lxml/lxml.objectify.pyx":1409
  * 
  *     # check for Python type hint
  *     value = cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
  *         c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *     if value is not None:
  */
-  __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_value = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1408
+  /* "src/lxml/lxml.objectify.pyx":1411
  *     value = cetree.attributeValueFromNsName(
  *         c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *     if value is not None:             # <<<<<<<<<<<<<<
@@ -21455,17 +21462,17 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/lxml.objectify.pyx":1409
+    /* "src/lxml/lxml.objectify.pyx":1412
  *         c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *     if value is not None:
  *         if value == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
  *             return lookup.tree_class
  *         py_type = <PyType>_PYTYPE_DICT.get(value)
  */
-    __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_value, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_value, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_3) {
 
-      /* "src/lxml/lxml.objectify.pyx":1410
+      /* "src/lxml/lxml.objectify.pyx":1413
  *     if value is not None:
  *         if value == TREE_PYTYPE_NAME:
  *             return lookup.tree_class             # <<<<<<<<<<<<<<
@@ -21477,7 +21484,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
       __pyx_r = __pyx_v_lookup->tree_class;
       goto __pyx_L0;
 
-      /* "src/lxml/lxml.objectify.pyx":1409
+      /* "src/lxml/lxml.objectify.pyx":1412
  *         c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *     if value is not None:
  *         if value == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
@@ -21486,7 +21493,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1411
+    /* "src/lxml/lxml.objectify.pyx":1414
  *         if value == TREE_PYTYPE_NAME:
  *             return lookup.tree_class
  *         py_type = <PyType>_PYTYPE_DICT.get(value)             # <<<<<<<<<<<<<<
@@ -21495,9 +21502,9 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
     if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
-    __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_4 = __pyx_t_1;
     __Pyx_INCREF(__pyx_t_4);
@@ -21505,7 +21512,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_v_py_type = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1412
+    /* "src/lxml/lxml.objectify.pyx":1415
  *             return lookup.tree_class
  *         py_type = <PyType>_PYTYPE_DICT.get(value)
  *         if py_type is not None:             # <<<<<<<<<<<<<<
@@ -21516,7 +21523,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/lxml.objectify.pyx":1413
+      /* "src/lxml/lxml.objectify.pyx":1416
  *         py_type = <PyType>_PYTYPE_DICT.get(value)
  *         if py_type is not None:
  *             return py_type._type             # <<<<<<<<<<<<<<
@@ -21528,7 +21535,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
       __pyx_r = __pyx_v_py_type->_type;
       goto __pyx_L0;
 
-      /* "src/lxml/lxml.objectify.pyx":1412
+      /* "src/lxml/lxml.objectify.pyx":1415
  *             return lookup.tree_class
  *         py_type = <PyType>_PYTYPE_DICT.get(value)
  *         if py_type is not None:             # <<<<<<<<<<<<<<
@@ -21537,7 +21544,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1408
+    /* "src/lxml/lxml.objectify.pyx":1411
  *     value = cetree.attributeValueFromNsName(
  *         c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *     if value is not None:             # <<<<<<<<<<<<<<
@@ -21546,19 +21553,19 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1417
+  /* "src/lxml/lxml.objectify.pyx":1420
  * 
  *     # check for XML Schema type hint
  *     value = cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  * 
  */
-  __pyx_t_4 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)__pyx_k_type))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)__pyx_k_type))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1420
+  /* "src/lxml/lxml.objectify.pyx":1423
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  * 
  *     if value is not None:             # <<<<<<<<<<<<<<
@@ -21569,7 +21576,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/lxml.objectify.pyx":1421
+    /* "src/lxml/lxml.objectify.pyx":1424
  * 
  *     if value is not None:
  *         schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)             # <<<<<<<<<<<<<<
@@ -21578,9 +21585,9 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
     if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
-    __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_1 = __pyx_t_4;
     __Pyx_INCREF(__pyx_t_1);
@@ -21588,7 +21595,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_v_schema_type = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1422
+    /* "src/lxml/lxml.objectify.pyx":1425
  *     if value is not None:
  *         schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is None and u':' in value:             # <<<<<<<<<<<<<<
@@ -21602,22 +21609,22 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
       __pyx_t_3 = __pyx_t_5;
       goto __pyx_L10_bool_binop_done;
     }
-    __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__12, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__12, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_2 = (__pyx_t_5 != 0);
     __pyx_t_3 = __pyx_t_2;
     __pyx_L10_bool_binop_done:;
     if (__pyx_t_3) {
 
-      /* "src/lxml/lxml.objectify.pyx":1423
+      /* "src/lxml/lxml.objectify.pyx":1426
  *         schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is None and u':' in value:
  *             prefix, value = value.split(u':', 1)             # <<<<<<<<<<<<<<
  *             schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is not None:
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
@@ -21630,7 +21637,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
         if (unlikely(size != 2)) {
           if (size > 2) __Pyx_RaiseTooManyValuesError(2);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         #if CYTHON_COMPILING_IN_CPYTHON
         if (likely(PyTuple_CheckExact(sequence))) {
@@ -21643,15 +21650,15 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
         __Pyx_INCREF(__pyx_t_1);
         __Pyx_INCREF(__pyx_t_6);
         #else
-        __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         #endif
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
         Py_ssize_t index = -1;
-        __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
@@ -21659,7 +21666,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
         __Pyx_GOTREF(__pyx_t_1);
         index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L12_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_6);
-        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_8 = NULL;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         goto __pyx_L13_unpacking_done;
@@ -21667,7 +21674,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_t_8 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_L13_unpacking_done:;
       }
       __pyx_v_prefix = __pyx_t_1;
@@ -21675,7 +21682,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
       __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_6);
       __pyx_t_6 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1424
+      /* "src/lxml/lxml.objectify.pyx":1427
  *         if schema_type is None and u':' in value:
  *             prefix, value = value.split(u':', 1)
  *             schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)             # <<<<<<<<<<<<<<
@@ -21684,9 +21691,9 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
       if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_6 = __pyx_t_4;
       __Pyx_INCREF(__pyx_t_6);
@@ -21694,7 +21701,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
       __Pyx_DECREF_SET(__pyx_v_schema_type, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
       __pyx_t_6 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1422
+      /* "src/lxml/lxml.objectify.pyx":1425
  *     if value is not None:
  *         schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is None and u':' in value:             # <<<<<<<<<<<<<<
@@ -21703,7 +21710,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1425
+    /* "src/lxml/lxml.objectify.pyx":1428
  *             prefix, value = value.split(u':', 1)
  *             schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is not None:             # <<<<<<<<<<<<<<
@@ -21714,7 +21721,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/lxml.objectify.pyx":1426
+      /* "src/lxml/lxml.objectify.pyx":1429
  *             schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is not None:
  *             return schema_type._type             # <<<<<<<<<<<<<<
@@ -21726,7 +21733,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
       __pyx_r = __pyx_v_schema_type->_type;
       goto __pyx_L0;
 
-      /* "src/lxml/lxml.objectify.pyx":1425
+      /* "src/lxml/lxml.objectify.pyx":1428
  *             prefix, value = value.split(u':', 1)
  *             schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is not None:             # <<<<<<<<<<<<<<
@@ -21735,7 +21742,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1420
+    /* "src/lxml/lxml.objectify.pyx":1423
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  * 
  *     if value is not None:             # <<<<<<<<<<<<<<
@@ -21744,19 +21751,19 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1429
+  /* "src/lxml/lxml.objectify.pyx":1432
  * 
  *     # otherwise determine class based on text content type
  *     el_class = _guessElementClass(c_node)             # <<<<<<<<<<<<<<
  *     if el_class is not None:
  *         return el_class
  */
-  __pyx_t_6 = __pyx_f_4lxml_9objectify__guessElementClass(__pyx_v_c_node); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __pyx_f_4lxml_9objectify__guessElementClass(__pyx_v_c_node); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_v_el_class = __pyx_t_6;
   __pyx_t_6 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1430
+  /* "src/lxml/lxml.objectify.pyx":1433
  *     # otherwise determine class based on text content type
  *     el_class = _guessElementClass(c_node)
  *     if el_class is not None:             # <<<<<<<<<<<<<<
@@ -21767,7 +21774,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/lxml.objectify.pyx":1431
+    /* "src/lxml/lxml.objectify.pyx":1434
  *     el_class = _guessElementClass(c_node)
  *     if el_class is not None:
  *         return el_class             # <<<<<<<<<<<<<<
@@ -21779,7 +21786,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_r = __pyx_v_el_class;
     goto __pyx_L0;
 
-    /* "src/lxml/lxml.objectify.pyx":1430
+    /* "src/lxml/lxml.objectify.pyx":1433
  *     # otherwise determine class based on text content type
  *     el_class = _guessElementClass(c_node)
  *     if el_class is not None:             # <<<<<<<<<<<<<<
@@ -21788,7 +21795,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1434
+  /* "src/lxml/lxml.objectify.pyx":1437
  * 
  *     # if element is a root node => default to tree node
  *     if c_node.parent is NULL or not tree._isElement(c_node.parent):             # <<<<<<<<<<<<<<
@@ -21806,7 +21813,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   __pyx_L17_bool_binop_done:;
   if (__pyx_t_3) {
 
-    /* "src/lxml/lxml.objectify.pyx":1435
+    /* "src/lxml/lxml.objectify.pyx":1438
  *     # if element is a root node => default to tree node
  *     if c_node.parent is NULL or not tree._isElement(c_node.parent):
  *         return lookup.tree_class             # <<<<<<<<<<<<<<
@@ -21818,7 +21825,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_r = __pyx_v_lookup->tree_class;
     goto __pyx_L0;
 
-    /* "src/lxml/lxml.objectify.pyx":1434
+    /* "src/lxml/lxml.objectify.pyx":1437
  * 
  *     # if element is a root node => default to tree node
  *     if c_node.parent is NULL or not tree._isElement(c_node.parent):             # <<<<<<<<<<<<<<
@@ -21827,7 +21834,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1437
+  /* "src/lxml/lxml.objectify.pyx":1440
  *         return lookup.tree_class
  * 
  *     return lookup.empty_data_class             # <<<<<<<<<<<<<<
@@ -21839,7 +21846,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   __pyx_r = __pyx_v_lookup->empty_data_class;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1393
+  /* "src/lxml/lxml.objectify.pyx":1396
  *         self.empty_data_class = empty_data_class
  * 
  * cdef object _lookupElementClass(state, _Document doc, tree.xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -21867,7 +21874,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1443
+/* "src/lxml/lxml.objectify.pyx":1446
  * # Type annotations
  * 
  * cdef PyType _check_type(tree.xmlNode* c_node, PyType pytype):             # <<<<<<<<<<<<<<
@@ -21894,7 +21901,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_check_type", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1444
+  /* "src/lxml/lxml.objectify.pyx":1447
  * 
  * cdef PyType _check_type(tree.xmlNode* c_node, PyType pytype):
  *     if pytype is None:             # <<<<<<<<<<<<<<
@@ -21905,7 +21912,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1445
+    /* "src/lxml/lxml.objectify.pyx":1448
  * cdef PyType _check_type(tree.xmlNode* c_node, PyType pytype):
  *     if pytype is None:
  *         return None             # <<<<<<<<<<<<<<
@@ -21917,7 +21924,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
     __pyx_r = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None);
     goto __pyx_L0;
 
-    /* "src/lxml/lxml.objectify.pyx":1444
+    /* "src/lxml/lxml.objectify.pyx":1447
  * 
  * cdef PyType _check_type(tree.xmlNode* c_node, PyType pytype):
  *     if pytype is None:             # <<<<<<<<<<<<<<
@@ -21926,19 +21933,19 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1446
+  /* "src/lxml/lxml.objectify.pyx":1449
  *     if pytype is None:
  *         return None
  *     value = textOf(c_node)             # <<<<<<<<<<<<<<
  *     try:
  *         pytype.type_check(value)
  */
-  __pyx_t_3 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_value = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1447
+  /* "src/lxml/lxml.objectify.pyx":1450
  *         return None
  *     value = textOf(c_node)
  *     try:             # <<<<<<<<<<<<<<
@@ -21952,7 +21959,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
     __Pyx_XGOTREF(__pyx_t_6);
     /*try:*/ {
 
-      /* "src/lxml/lxml.objectify.pyx":1448
+      /* "src/lxml/lxml.objectify.pyx":1451
  *     value = textOf(c_node)
  *     try:
  *         pytype.type_check(value)             # <<<<<<<<<<<<<<
@@ -21971,23 +21978,23 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
         }
       }
       if (!__pyx_t_8) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
         __Pyx_INCREF(__pyx_v_value);
         __Pyx_GIVEREF(__pyx_v_value);
         PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_value);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1449
+      /* "src/lxml/lxml.objectify.pyx":1452
  *     try:
  *         pytype.type_check(value)
  *         return pytype             # <<<<<<<<<<<<<<
@@ -21999,7 +22006,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
       __pyx_r = __pyx_v_pytype;
       goto __pyx_L8_try_return;
 
-      /* "src/lxml/lxml.objectify.pyx":1447
+      /* "src/lxml/lxml.objectify.pyx":1450
  *         return None
  *     value = textOf(c_node)
  *     try:             # <<<<<<<<<<<<<<
@@ -22013,7 +22020,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1450
+    /* "src/lxml/lxml.objectify.pyx":1453
  *         pytype.type_check(value)
  *         return pytype
  *     except IGNORABLE_ERRORS:             # <<<<<<<<<<<<<<
@@ -22028,7 +22035,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
     goto __pyx_L6_except_error;
     __pyx_L6_except_error:;
 
-    /* "src/lxml/lxml.objectify.pyx":1447
+    /* "src/lxml/lxml.objectify.pyx":1450
  *         return None
  *     value = textOf(c_node)
  *     try:             # <<<<<<<<<<<<<<
@@ -22053,7 +22060,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
     __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1453
+  /* "src/lxml/lxml.objectify.pyx":1456
  *         # could not be parsed as the specified type => ignore
  *         pass
  *     return None             # <<<<<<<<<<<<<<
@@ -22065,7 +22072,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
   __pyx_r = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None);
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1443
+  /* "src/lxml/lxml.objectify.pyx":1446
  * # Type annotations
  * 
  * cdef PyType _check_type(tree.xmlNode* c_node, PyType pytype):             # <<<<<<<<<<<<<<
@@ -22088,7 +22095,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1455
+/* "src/lxml/lxml.objectify.pyx":1458
  *     return None
  * 
  * def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False,             # <<<<<<<<<<<<<<
@@ -22117,7 +22124,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_21pyannotate(PyObject *__pyx_self, Py
     values[1] = ((PyObject *)((PyObject *)Py_False));
     values[2] = ((PyObject *)((PyObject *)Py_False));
 
-    /* "src/lxml/lxml.objectify.pyx":1456
+    /* "src/lxml/lxml.objectify.pyx":1459
  * 
  * def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False,
  *              empty_pytype=None):             # <<<<<<<<<<<<<<
@@ -22147,7 +22154,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_21pyannotate(PyObject *__pyx_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pyannotate") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pyannotate") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -22161,7 +22168,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_21pyannotate(PyObject *__pyx_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("pyannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("pyannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.pyannotate", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -22169,7 +22176,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_21pyannotate(PyObject *__pyx_self, Py
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_9objectify_20pyannotate(__pyx_self, __pyx_v_element_or_tree, __pyx_v_ignore_old, __pyx_v_ignore_xsi, __pyx_v_empty_pytype);
 
-  /* "src/lxml/lxml.objectify.pyx":1455
+  /* "src/lxml/lxml.objectify.pyx":1458
  *     return None
  * 
  * def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False,             # <<<<<<<<<<<<<<
@@ -22194,32 +22201,32 @@ static PyObject *__pyx_pf_4lxml_9objectify_20pyannotate(CYTHON_UNUSED PyObject *
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("pyannotate", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1475
+  /* "src/lxml/lxml.objectify.pyx":1478
  *     """
  *     cdef _Element  element
  *     element = cetree.rootNodeOrRaise(element_or_tree)             # <<<<<<<<<<<<<<
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
  * 
  */
-  __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1476
+  /* "src/lxml/lxml.objectify.pyx":1479
  *     cdef _Element  element
  *     element = cetree.rootNodeOrRaise(element_or_tree)
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)             # <<<<<<<<<<<<<<
  * 
  * def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_xsi); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __pyx_f_4lxml_9objectify__annotate(__pyx_v_element, 0, 1, __pyx_t_2, __pyx_t_3, Py_None, __pyx_v_empty_pytype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_xsi); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_9objectify__annotate(__pyx_v_element, 0, 1, __pyx_t_2, __pyx_t_3, Py_None, __pyx_v_empty_pytype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1455
+  /* "src/lxml/lxml.objectify.pyx":1458
  *     return None
  * 
  * def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False,             # <<<<<<<<<<<<<<
@@ -22241,7 +22248,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_20pyannotate(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1478
+/* "src/lxml/lxml.objectify.pyx":1481
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
  * 
  * def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,             # <<<<<<<<<<<<<<
@@ -22270,7 +22277,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_23xsiannotate(PyObject *__pyx_self, P
     values[1] = ((PyObject *)((PyObject *)Py_False));
     values[2] = ((PyObject *)((PyObject *)Py_False));
 
-    /* "src/lxml/lxml.objectify.pyx":1479
+    /* "src/lxml/lxml.objectify.pyx":1482
  * 
  * def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,
  *                 empty_type=None):             # <<<<<<<<<<<<<<
@@ -22300,7 +22307,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_23xsiannotate(PyObject *__pyx_self, P
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xsiannotate") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1478; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xsiannotate") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -22314,7 +22321,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_23xsiannotate(PyObject *__pyx_self, P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("xsiannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1478; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("xsiannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.xsiannotate", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -22322,7 +22329,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_23xsiannotate(PyObject *__pyx_self, P
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_9objectify_22xsiannotate(__pyx_self, __pyx_v_element_or_tree, __pyx_v_ignore_old, __pyx_v_ignore_pytype, __pyx_v_empty_type);
 
-  /* "src/lxml/lxml.objectify.pyx":1478
+  /* "src/lxml/lxml.objectify.pyx":1481
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
  * 
  * def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,             # <<<<<<<<<<<<<<
@@ -22347,32 +22354,32 @@ static PyObject *__pyx_pf_4lxml_9objectify_22xsiannotate(CYTHON_UNUSED PyObject
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("xsiannotate", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1503
+  /* "src/lxml/lxml.objectify.pyx":1506
  *     """
  *     cdef _Element  element
  *     element = cetree.rootNodeOrRaise(element_or_tree)             # <<<<<<<<<<<<<<
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
  * 
  */
-  __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1504
+  /* "src/lxml/lxml.objectify.pyx":1507
  *     cdef _Element  element
  *     element = cetree.rootNodeOrRaise(element_or_tree)
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)             # <<<<<<<<<<<<<<
  * 
  * def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_pytype); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __pyx_f_4lxml_9objectify__annotate(__pyx_v_element, 1, 0, __pyx_t_2, __pyx_t_3, __pyx_v_empty_type, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_pytype); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_9objectify__annotate(__pyx_v_element, 1, 0, __pyx_t_2, __pyx_t_3, __pyx_v_empty_type, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1478
+  /* "src/lxml/lxml.objectify.pyx":1481
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
  * 
  * def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,             # <<<<<<<<<<<<<<
@@ -22394,7 +22401,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_22xsiannotate(CYTHON_UNUSED PyObject
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1506
+/* "src/lxml/lxml.objectify.pyx":1509
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
  * 
  * def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,             # <<<<<<<<<<<<<<
@@ -22426,7 +22433,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_25annotate(PyObject *__pyx_self, PyOb
     values[1] = ((PyObject *)((PyObject *)Py_True));
     values[2] = ((PyObject *)((PyObject *)Py_False));
 
-    /* "src/lxml/lxml.objectify.pyx":1507
+    /* "src/lxml/lxml.objectify.pyx":1510
  * 
  * def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,
  *              empty_pytype=None, empty_type=None, annotate_xsi=0,             # <<<<<<<<<<<<<<
@@ -22459,7 +22466,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_25annotate(PyObject *__pyx_self, PyOb
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "annotate") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "annotate") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -22476,7 +22483,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_25annotate(PyObject *__pyx_self, PyOb
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("annotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("annotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.annotate", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -22484,7 +22491,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_25annotate(PyObject *__pyx_self, PyOb
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_9objectify_24annotate(__pyx_self, __pyx_v_element_or_tree, __pyx_v_ignore_old, __pyx_v_ignore_xsi, __pyx_v_empty_pytype, __pyx_v_empty_type, __pyx_v_annotate_xsi, __pyx_v_annotate_pytype);
 
-  /* "src/lxml/lxml.objectify.pyx":1506
+  /* "src/lxml/lxml.objectify.pyx":1509
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
  * 
  * def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,             # <<<<<<<<<<<<<<
@@ -22511,50 +22518,50 @@ static PyObject *__pyx_pf_4lxml_9objectify_24annotate(CYTHON_UNUSED PyObject *__
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("annotate", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1540
+  /* "src/lxml/lxml.objectify.pyx":1543
  *     """
  *     cdef _Element  element
  *     element = cetree.rootNodeOrRaise(element_or_tree)             # <<<<<<<<<<<<<<
  *     _annotate(element, annotate_xsi, annotate_pytype, ignore_xsi,
  *               ignore_old, empty_type, empty_pytype)
  */
-  __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1541
+  /* "src/lxml/lxml.objectify.pyx":1544
  *     cdef _Element  element
  *     element = cetree.rootNodeOrRaise(element_or_tree)
  *     _annotate(element, annotate_xsi, annotate_pytype, ignore_xsi,             # <<<<<<<<<<<<<<
  *               ignore_old, empty_type, empty_pytype)
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate_xsi); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_annotate_pytype); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_xsi); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate_xsi); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_annotate_pytype); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_xsi); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1542
+  /* "src/lxml/lxml.objectify.pyx":1545
  *     element = cetree.rootNodeOrRaise(element_or_tree)
  *     _annotate(element, annotate_xsi, annotate_pytype, ignore_xsi,
  *               ignore_old, empty_type, empty_pytype)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1541
+  /* "src/lxml/lxml.objectify.pyx":1544
  *     cdef _Element  element
  *     element = cetree.rootNodeOrRaise(element_or_tree)
  *     _annotate(element, annotate_xsi, annotate_pytype, ignore_xsi,             # <<<<<<<<<<<<<<
  *               ignore_old, empty_type, empty_pytype)
  * 
  */
-  __pyx_t_1 = __pyx_f_4lxml_9objectify__annotate(__pyx_v_element, __pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_v_empty_type, __pyx_v_empty_pytype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_9objectify__annotate(__pyx_v_element, __pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_v_empty_type, __pyx_v_empty_pytype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1506
+  /* "src/lxml/lxml.objectify.pyx":1509
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
  * 
  * def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,             # <<<<<<<<<<<<<<
@@ -22576,7 +22583,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_24annotate(CYTHON_UNUSED PyObject *__
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1545
+/* "src/lxml/lxml.objectify.pyx":1548
  * 
  * 
  * cdef _annotate(_Element element, bint annotate_xsi, bint annotate_pytype,             # <<<<<<<<<<<<<<
@@ -22605,7 +22612,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __Pyx_INCREF(__pyx_v_empty_type_name);
   __Pyx_INCREF(__pyx_v_empty_pytype_name);
 
-  /* "src/lxml/lxml.objectify.pyx":1552
+  /* "src/lxml/lxml.objectify.pyx":1555
  *     cdef PyType empty_pytype, StrType, NoneType
  * 
  *     if not annotate_xsi and not annotate_pytype:             # <<<<<<<<<<<<<<
@@ -22623,7 +22630,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/lxml.objectify.pyx":1553
+    /* "src/lxml/lxml.objectify.pyx":1556
  * 
  *     if not annotate_xsi and not annotate_pytype:
  *         return             # <<<<<<<<<<<<<<
@@ -22634,7 +22641,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
 
-    /* "src/lxml/lxml.objectify.pyx":1552
+    /* "src/lxml/lxml.objectify.pyx":1555
  *     cdef PyType empty_pytype, StrType, NoneType
  * 
  *     if not annotate_xsi and not annotate_pytype:             # <<<<<<<<<<<<<<
@@ -22643,7 +22650,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1555
+  /* "src/lxml/lxml.objectify.pyx":1558
  *         return
  * 
  *     if empty_type_name is not None:             # <<<<<<<<<<<<<<
@@ -22654,7 +22661,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1556
+    /* "src/lxml/lxml.objectify.pyx":1559
  * 
  *     if empty_type_name is not None:
  *         if isinstance(empty_type_name, bytes):             # <<<<<<<<<<<<<<
@@ -22665,7 +22672,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/lxml.objectify.pyx":1557
+      /* "src/lxml/lxml.objectify.pyx":1560
  *     if empty_type_name is not None:
  *         if isinstance(empty_type_name, bytes):
  *             empty_type_name = (<bytes>empty_type_name).decode("ascii")             # <<<<<<<<<<<<<<
@@ -22674,14 +22681,14 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
       if (unlikely(__pyx_v_empty_type_name == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_t_3 = __Pyx_decode_bytes(((PyObject*)__pyx_v_empty_type_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_decode_bytes(((PyObject*)__pyx_v_empty_type_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_empty_type_name, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1556
+      /* "src/lxml/lxml.objectify.pyx":1559
  * 
  *     if empty_type_name is not None:
  *         if isinstance(empty_type_name, bytes):             # <<<<<<<<<<<<<<
@@ -22690,7 +22697,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1558
+    /* "src/lxml/lxml.objectify.pyx":1561
  *         if isinstance(empty_type_name, bytes):
  *             empty_type_name = (<bytes>empty_type_name).decode("ascii")
  *         empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)             # <<<<<<<<<<<<<<
@@ -22699,9 +22706,9 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
     if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
-    __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_empty_type_name, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_empty_type_name, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = __pyx_t_3;
     __Pyx_INCREF(__pyx_t_4);
@@ -22709,7 +22716,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
     __pyx_v_empty_pytype = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1555
+    /* "src/lxml/lxml.objectify.pyx":1558
  *         return
  * 
  *     if empty_type_name is not None:             # <<<<<<<<<<<<<<
@@ -22719,7 +22726,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
     goto __pyx_L6;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1559
+  /* "src/lxml/lxml.objectify.pyx":1562
  *             empty_type_name = (<bytes>empty_type_name).decode("ascii")
  *         empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)
  *     elif empty_pytype_name is not None:             # <<<<<<<<<<<<<<
@@ -22730,7 +22737,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1560
+    /* "src/lxml/lxml.objectify.pyx":1563
  *         empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)
  *     elif empty_pytype_name is not None:
  *         if isinstance(empty_pytype_name, bytes):             # <<<<<<<<<<<<<<
@@ -22741,7 +22748,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/lxml.objectify.pyx":1561
+      /* "src/lxml/lxml.objectify.pyx":1564
  *     elif empty_pytype_name is not None:
  *         if isinstance(empty_pytype_name, bytes):
  *             empty_pytype_name = (<bytes>empty_pytype_name).decode("ascii")             # <<<<<<<<<<<<<<
@@ -22750,14 +22757,14 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
       if (unlikely(__pyx_v_empty_pytype_name == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_t_4 = __Pyx_decode_bytes(((PyObject*)__pyx_v_empty_pytype_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_decode_bytes(((PyObject*)__pyx_v_empty_pytype_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_empty_pytype_name, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1560
+      /* "src/lxml/lxml.objectify.pyx":1563
  *         empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)
  *     elif empty_pytype_name is not None:
  *         if isinstance(empty_pytype_name, bytes):             # <<<<<<<<<<<<<<
@@ -22766,7 +22773,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1562
+    /* "src/lxml/lxml.objectify.pyx":1565
  *         if isinstance(empty_pytype_name, bytes):
  *             empty_pytype_name = (<bytes>empty_pytype_name).decode("ascii")
  *         empty_pytype = <PyType>_PYTYPE_DICT.get(empty_pytype_name)             # <<<<<<<<<<<<<<
@@ -22775,9 +22782,9 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
     if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
-    __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_empty_pytype_name, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_empty_pytype_name, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_3 = __pyx_t_4;
     __Pyx_INCREF(__pyx_t_3);
@@ -22785,7 +22792,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
     __pyx_v_empty_pytype = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1559
+    /* "src/lxml/lxml.objectify.pyx":1562
  *             empty_type_name = (<bytes>empty_type_name).decode("ascii")
  *         empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)
  *     elif empty_pytype_name is not None:             # <<<<<<<<<<<<<<
@@ -22795,7 +22802,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
     goto __pyx_L6;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1564
+  /* "src/lxml/lxml.objectify.pyx":1567
  *         empty_pytype = <PyType>_PYTYPE_DICT.get(empty_pytype_name)
  *     else:
  *         empty_pytype = None             # <<<<<<<<<<<<<<
@@ -22808,7 +22815,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   }
   __pyx_L6:;
 
-  /* "src/lxml/lxml.objectify.pyx":1566
+  /* "src/lxml/lxml.objectify.pyx":1569
  *         empty_pytype = None
  * 
  *     StrType  = <PyType>_PYTYPE_DICT.get(u'str')             # <<<<<<<<<<<<<<
@@ -22817,9 +22824,9 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
   if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_n_u_str, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_n_u_str, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = __pyx_t_3;
   __Pyx_INCREF(__pyx_t_4);
@@ -22827,7 +22834,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_v_StrType = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1567
+  /* "src/lxml/lxml.objectify.pyx":1570
  * 
  *     StrType  = <PyType>_PYTYPE_DICT.get(u'str')
  *     NoneType = <PyType>_PYTYPE_DICT.get(u'NoneType')             # <<<<<<<<<<<<<<
@@ -22836,9 +22843,9 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
   if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_n_u_NoneType, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_n_u_NoneType, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_3 = __pyx_t_4;
   __Pyx_INCREF(__pyx_t_3);
@@ -22846,7 +22853,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_v_NoneType = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1569
+  /* "src/lxml/lxml.objectify.pyx":1572
  *     NoneType = <PyType>_PYTYPE_DICT.get(u'NoneType')
  * 
  *     doc = element._doc             # <<<<<<<<<<<<<<
@@ -22858,7 +22865,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1570
+  /* "src/lxml/lxml.objectify.pyx":1573
  * 
  *     doc = element._doc
  *     c_node = element._c_node             # <<<<<<<<<<<<<<
@@ -22868,7 +22875,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_t_5 = __pyx_v_element->_c_node;
   __pyx_v_c_node = __pyx_t_5;
 
-  /* "src/lxml/lxml.objectify.pyx":1571
+  /* "src/lxml/lxml.objectify.pyx":1574
  *     doc = element._doc
  *     c_node = element._c_node
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)             # <<<<<<<<<<<<<<
@@ -22877,7 +22884,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
   BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node, __pyx_v_c_node, 1);
 
-  /* "src/lxml/lxml.objectify.pyx":1572
+  /* "src/lxml/lxml.objectify.pyx":1575
  *     c_node = element._c_node
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -22887,16 +22894,16 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_t_1 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/lxml.objectify.pyx":1573
+    /* "src/lxml/lxml.objectify.pyx":1576
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         _annotate_element(c_node, doc, annotate_xsi, annotate_pytype,             # <<<<<<<<<<<<<<
  *                           ignore_xsi, ignore_pytype,
  *                           empty_type_name, empty_pytype, StrType, NoneType)
  */
-    __pyx_t_6 = __pyx_f_4lxml_9objectify__annotate_element(__pyx_v_c_node, __pyx_v_doc, __pyx_v_annotate_xsi, __pyx_v_annotate_pytype, __pyx_v_ignore_xsi, __pyx_v_ignore_pytype, __pyx_v_empty_type_name, __pyx_v_empty_pytype, __pyx_v_StrType, __pyx_v_NoneType); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __pyx_f_4lxml_9objectify__annotate_element(__pyx_v_c_node, __pyx_v_doc, __pyx_v_annotate_xsi, __pyx_v_annotate_pytype, __pyx_v_ignore_xsi, __pyx_v_ignore_pytype, __pyx_v_empty_type_name, __pyx_v_empty_pytype, __pyx_v_StrType, __pyx_v_NoneType); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/lxml.objectify.pyx":1572
+    /* "src/lxml/lxml.objectify.pyx":1575
  *     c_node = element._c_node
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -22905,7 +22912,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1576
+  /* "src/lxml/lxml.objectify.pyx":1579
  *                           ignore_xsi, ignore_pytype,
  *                           empty_type_name, empty_pytype, StrType, NoneType)
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
@@ -22914,7 +22921,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
 
-  /* "src/lxml/lxml.objectify.pyx":1545
+  /* "src/lxml/lxml.objectify.pyx":1548
  * 
  * 
  * cdef _annotate(_Element element, bint annotate_xsi, bint annotate_pytype,             # <<<<<<<<<<<<<<
@@ -22942,7 +22949,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1578
+/* "src/lxml/lxml.objectify.pyx":1581
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  * 
  * cdef int _annotate_element(tree.xmlNode* c_node, _Document doc,             # <<<<<<<<<<<<<<
@@ -22975,7 +22982,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_annotate_element", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1584
+  /* "src/lxml/lxml.objectify.pyx":1587
  *                            PyType StrType, PyType NoneType) except -1:
  *     cdef tree.xmlNs*   c_ns
  *     cdef PyType pytype = None             # <<<<<<<<<<<<<<
@@ -22985,7 +22992,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __Pyx_INCREF(Py_None);
   __pyx_v_pytype = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None);
 
-  /* "src/lxml/lxml.objectify.pyx":1585
+  /* "src/lxml/lxml.objectify.pyx":1588
  *     cdef tree.xmlNs*   c_ns
  *     cdef PyType pytype = None
  *     typename = None             # <<<<<<<<<<<<<<
@@ -22995,7 +23002,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __Pyx_INCREF(Py_None);
   __pyx_v_typename = Py_None;
 
-  /* "src/lxml/lxml.objectify.pyx":1586
+  /* "src/lxml/lxml.objectify.pyx":1589
  *     cdef PyType pytype = None
  *     typename = None
  *     istree = 0             # <<<<<<<<<<<<<<
@@ -23004,20 +23011,20 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   __pyx_v_istree = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1589
+  /* "src/lxml/lxml.objectify.pyx":1592
  * 
  *     # if element is defined as xsi:nil, represent it as None
  *     if cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"nil") == "true":
  *         pytype = NoneType
  */
-  __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)__pyx_k_nil))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)__pyx_k_nil))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_true, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_true, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1591
+    /* "src/lxml/lxml.objectify.pyx":1594
  *     if cetree.attributeValueFromNsName(
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"nil") == "true":
  *         pytype = NoneType             # <<<<<<<<<<<<<<
@@ -23027,7 +23034,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __Pyx_INCREF(((PyObject *)__pyx_v_NoneType));
     __Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_NoneType);
 
-    /* "src/lxml/lxml.objectify.pyx":1589
+    /* "src/lxml/lxml.objectify.pyx":1592
  * 
  *     # if element is defined as xsi:nil, represent it as None
  *     if cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
@@ -23036,7 +23043,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1593
+  /* "src/lxml/lxml.objectify.pyx":1596
  *         pytype = NoneType
  * 
  *     if pytype is None and not ignore_xsi:             # <<<<<<<<<<<<<<
@@ -23055,19 +23062,19 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_L5_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1595
+    /* "src/lxml/lxml.objectify.pyx":1598
  *     if pytype is None and not ignore_xsi:
  *         # check that old xsi type value is valid
  *         typename = cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
  *             c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  *         if typename is not None:
  */
-    __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)__pyx_k_type))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)__pyx_k_type))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_typename, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1597
+    /* "src/lxml/lxml.objectify.pyx":1600
  *         typename = cetree.attributeValueFromNsName(
  *             c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  *         if typename is not None:             # <<<<<<<<<<<<<<
@@ -23078,7 +23085,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __pyx_t_4 = (__pyx_t_2 != 0);
     if (__pyx_t_4) {
 
-      /* "src/lxml/lxml.objectify.pyx":1598
+      /* "src/lxml/lxml.objectify.pyx":1601
  *             c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  *         if typename is not None:
  *             pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)             # <<<<<<<<<<<<<<
@@ -23087,9 +23094,9 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_typename, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_typename, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_5 = __pyx_t_1;
       __Pyx_INCREF(__pyx_t_5);
@@ -23097,7 +23104,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_5));
       __pyx_t_5 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1599
+      /* "src/lxml/lxml.objectify.pyx":1602
  *         if typename is not None:
  *             pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is None and u':' in typename:             # <<<<<<<<<<<<<<
@@ -23111,22 +23118,22 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __pyx_t_4 = __pyx_t_3;
         goto __pyx_L9_bool_binop_done;
       }
-      __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__12, __pyx_v_typename, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__12, __pyx_v_typename, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_2 = (__pyx_t_3 != 0);
       __pyx_t_4 = __pyx_t_2;
       __pyx_L9_bool_binop_done:;
       if (__pyx_t_4) {
 
-        /* "src/lxml/lxml.objectify.pyx":1600
+        /* "src/lxml/lxml.objectify.pyx":1603
  *             pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is None and u':' in typename:
  *                 prefix, typename = typename.split(u':', 1)             # <<<<<<<<<<<<<<
  *                 pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is not None and pytype is not StrType:
  */
-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_typename, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_typename, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
@@ -23139,7 +23146,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           if (unlikely(size != 2)) {
             if (size > 2) __Pyx_RaiseTooManyValuesError(2);
             else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           #if CYTHON_COMPILING_IN_CPYTHON
           if (likely(PyTuple_CheckExact(sequence))) {
@@ -23152,15 +23159,15 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __Pyx_INCREF(__pyx_t_5);
           __Pyx_INCREF(__pyx_t_6);
           #else
-          __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_5);
-          __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           #endif
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         } else {
           Py_ssize_t index = -1;
-          __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
           __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
@@ -23168,7 +23175,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __Pyx_GOTREF(__pyx_t_5);
           index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L11_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_6);
-          if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_t_8 = NULL;
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           goto __pyx_L12_unpacking_done;
@@ -23176,7 +23183,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           __pyx_t_8 = NULL;
           if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_L12_unpacking_done:;
         }
         __pyx_v_prefix = __pyx_t_5;
@@ -23184,7 +23191,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __Pyx_DECREF_SET(__pyx_v_typename, __pyx_t_6);
         __pyx_t_6 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1601
+        /* "src/lxml/lxml.objectify.pyx":1604
  *             if pytype is None and u':' in typename:
  *                 prefix, typename = typename.split(u':', 1)
  *                 pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)             # <<<<<<<<<<<<<<
@@ -23193,9 +23200,9 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
-        __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_typename, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_typename, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_t_6 = __pyx_t_1;
         __Pyx_INCREF(__pyx_t_6);
@@ -23203,7 +23210,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
         __pyx_t_6 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1599
+        /* "src/lxml/lxml.objectify.pyx":1602
  *         if typename is not None:
  *             pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is None and u':' in typename:             # <<<<<<<<<<<<<<
@@ -23212,7 +23219,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1602
+      /* "src/lxml/lxml.objectify.pyx":1605
  *                 prefix, typename = typename.split(u':', 1)
  *                 pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is not None and pytype is not StrType:             # <<<<<<<<<<<<<<
@@ -23232,19 +23239,19 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __pyx_L14_bool_binop_done:;
       if (__pyx_t_4) {
 
-        /* "src/lxml/lxml.objectify.pyx":1606
+        /* "src/lxml/lxml.objectify.pyx":1609
  *                 # anyway, so just accept it if given as type
  *                 # information
  *                 pytype = _check_type(c_node, pytype)             # <<<<<<<<<<<<<<
  *                 if pytype is None:
  *                     typename = None
  */
-        __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_9objectify__check_type(__pyx_v_c_node, __pyx_v_pytype)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_9objectify__check_type(__pyx_v_c_node, __pyx_v_pytype)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
         __pyx_t_6 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1607
+        /* "src/lxml/lxml.objectify.pyx":1610
  *                 # information
  *                 pytype = _check_type(c_node, pytype)
  *                 if pytype is None:             # <<<<<<<<<<<<<<
@@ -23255,7 +23262,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __pyx_t_2 = (__pyx_t_4 != 0);
         if (__pyx_t_2) {
 
-          /* "src/lxml/lxml.objectify.pyx":1608
+          /* "src/lxml/lxml.objectify.pyx":1611
  *                 pytype = _check_type(c_node, pytype)
  *                 if pytype is None:
  *                     typename = None             # <<<<<<<<<<<<<<
@@ -23265,7 +23272,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __Pyx_INCREF(Py_None);
           __Pyx_DECREF_SET(__pyx_v_typename, Py_None);
 
-          /* "src/lxml/lxml.objectify.pyx":1607
+          /* "src/lxml/lxml.objectify.pyx":1610
  *                 # information
  *                 pytype = _check_type(c_node, pytype)
  *                 if pytype is None:             # <<<<<<<<<<<<<<
@@ -23274,7 +23281,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         }
 
-        /* "src/lxml/lxml.objectify.pyx":1602
+        /* "src/lxml/lxml.objectify.pyx":1605
  *                 prefix, typename = typename.split(u':', 1)
  *                 pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is not None and pytype is not StrType:             # <<<<<<<<<<<<<<
@@ -23283,7 +23290,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1597
+      /* "src/lxml/lxml.objectify.pyx":1600
  *         typename = cetree.attributeValueFromNsName(
  *             c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  *         if typename is not None:             # <<<<<<<<<<<<<<
@@ -23292,7 +23299,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1593
+    /* "src/lxml/lxml.objectify.pyx":1596
  *         pytype = NoneType
  * 
  *     if pytype is None and not ignore_xsi:             # <<<<<<<<<<<<<<
@@ -23301,7 +23308,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1610
+  /* "src/lxml/lxml.objectify.pyx":1613
  *                     typename = None
  * 
  *     if pytype is None and not ignore_pytype:             # <<<<<<<<<<<<<<
@@ -23320,19 +23327,19 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_L18_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1612
+    /* "src/lxml/lxml.objectify.pyx":1615
  *     if pytype is None and not ignore_pytype:
  *         # check that old pytype value is valid
  *         old_pytypename = cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
  *             c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *         if old_pytypename is not None:
  */
-    __pyx_t_6 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_v_old_pytypename = __pyx_t_6;
     __pyx_t_6 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1614
+    /* "src/lxml/lxml.objectify.pyx":1617
  *         old_pytypename = cetree.attributeValueFromNsName(
  *             c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *         if old_pytypename is not None:             # <<<<<<<<<<<<<<
@@ -23343,17 +23350,17 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/lxml.objectify.pyx":1615
+      /* "src/lxml/lxml.objectify.pyx":1618
  *             c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *         if old_pytypename is not None:
  *             if old_pytypename == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
  *                 if not cetree.hasChild(c_node):
  *                     # only case where we should keep it,
  */
-      __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_old_pytypename, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_old_pytypename, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_3) {
 
-        /* "src/lxml/lxml.objectify.pyx":1616
+        /* "src/lxml/lxml.objectify.pyx":1619
  *         if old_pytypename is not None:
  *             if old_pytypename == TREE_PYTYPE_NAME:
  *                 if not cetree.hasChild(c_node):             # <<<<<<<<<<<<<<
@@ -23363,7 +23370,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __pyx_t_3 = ((!(hasChild(__pyx_v_c_node) != 0)) != 0);
         if (__pyx_t_3) {
 
-          /* "src/lxml/lxml.objectify.pyx":1619
+          /* "src/lxml/lxml.objectify.pyx":1622
  *                     # only case where we should keep it,
  *                     # everything else is clear enough
  *                     pytype = TREE_PYTYPE             # <<<<<<<<<<<<<<
@@ -23373,7 +23380,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_9objectify_TREE_PYTYPE));
           __Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_4lxml_9objectify_TREE_PYTYPE);
 
-          /* "src/lxml/lxml.objectify.pyx":1616
+          /* "src/lxml/lxml.objectify.pyx":1619
  *         if old_pytypename is not None:
  *             if old_pytypename == TREE_PYTYPE_NAME:
  *                 if not cetree.hasChild(c_node):             # <<<<<<<<<<<<<<
@@ -23382,7 +23389,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         }
 
-        /* "src/lxml/lxml.objectify.pyx":1615
+        /* "src/lxml/lxml.objectify.pyx":1618
  *             c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *         if old_pytypename is not None:
  *             if old_pytypename == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
@@ -23392,7 +23399,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         goto __pyx_L21;
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1621
+      /* "src/lxml/lxml.objectify.pyx":1624
  *                     pytype = TREE_PYTYPE
  *             else:
  *                 if old_pytypename == 'none':             # <<<<<<<<<<<<<<
@@ -23400,10 +23407,10 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                     old_pytypename = "NoneType"
  */
       /*else*/ {
-        __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_old_pytypename, __pyx_n_s_none, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_old_pytypename, __pyx_n_s_none, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         if (__pyx_t_3) {
 
-          /* "src/lxml/lxml.objectify.pyx":1623
+          /* "src/lxml/lxml.objectify.pyx":1626
  *                 if old_pytypename == 'none':
  *                     # transition from lxml 1.x
  *                     old_pytypename = "NoneType"             # <<<<<<<<<<<<<<
@@ -23413,7 +23420,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __Pyx_INCREF(__pyx_n_s_NoneType);
           __Pyx_DECREF_SET(__pyx_v_old_pytypename, __pyx_n_s_NoneType);
 
-          /* "src/lxml/lxml.objectify.pyx":1621
+          /* "src/lxml/lxml.objectify.pyx":1624
  *                     pytype = TREE_PYTYPE
  *             else:
  *                 if old_pytypename == 'none':             # <<<<<<<<<<<<<<
@@ -23422,7 +23429,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         }
 
-        /* "src/lxml/lxml.objectify.pyx":1624
+        /* "src/lxml/lxml.objectify.pyx":1627
  *                     # transition from lxml 1.x
  *                     old_pytypename = "NoneType"
  *                 pytype = <PyType>_PYTYPE_DICT.get(old_pytypename)             # <<<<<<<<<<<<<<
@@ -23431,9 +23438,9 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
-        __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_old_pytypename, Py_None); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_old_pytypename, Py_None); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_1 = __pyx_t_6;
         __Pyx_INCREF(__pyx_t_1);
@@ -23441,7 +23448,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1));
         __pyx_t_1 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1625
+        /* "src/lxml/lxml.objectify.pyx":1628
  *                     old_pytypename = "NoneType"
  *                 pytype = <PyType>_PYTYPE_DICT.get(old_pytypename)
  *                 if pytype is not None and pytype is not StrType:             # <<<<<<<<<<<<<<
@@ -23461,19 +23468,19 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __pyx_L25_bool_binop_done:;
         if (__pyx_t_3) {
 
-          /* "src/lxml/lxml.objectify.pyx":1629
+          /* "src/lxml/lxml.objectify.pyx":1632
  *                     # default anyway, so just accept it if given as
  *                     # type information
  *                     pytype = _check_type(c_node, pytype)             # <<<<<<<<<<<<<<
  * 
  *     if pytype is None:
  */
-          __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_9objectify__check_type(__pyx_v_c_node, __pyx_v_pytype)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_9objectify__check_type(__pyx_v_c_node, __pyx_v_pytype)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1));
           __pyx_t_1 = 0;
 
-          /* "src/lxml/lxml.objectify.pyx":1625
+          /* "src/lxml/lxml.objectify.pyx":1628
  *                     old_pytypename = "NoneType"
  *                 pytype = <PyType>_PYTYPE_DICT.get(old_pytypename)
  *                 if pytype is not None and pytype is not StrType:             # <<<<<<<<<<<<<<
@@ -23484,7 +23491,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       }
       __pyx_L21:;
 
-      /* "src/lxml/lxml.objectify.pyx":1614
+      /* "src/lxml/lxml.objectify.pyx":1617
  *         old_pytypename = cetree.attributeValueFromNsName(
  *             c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *         if old_pytypename is not None:             # <<<<<<<<<<<<<<
@@ -23493,7 +23500,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1610
+    /* "src/lxml/lxml.objectify.pyx":1613
  *                     typename = None
  * 
  *     if pytype is None and not ignore_pytype:             # <<<<<<<<<<<<<<
@@ -23502,7 +23509,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1631
+  /* "src/lxml/lxml.objectify.pyx":1634
  *                     pytype = _check_type(c_node, pytype)
  * 
  *     if pytype is None:             # <<<<<<<<<<<<<<
@@ -23513,7 +23520,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1633
+    /* "src/lxml/lxml.objectify.pyx":1636
  *     if pytype is None:
  *         # try to guess type
  *         if not cetree.hasChild(c_node):             # <<<<<<<<<<<<<<
@@ -23523,22 +23530,22 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __pyx_t_2 = ((!(hasChild(__pyx_v_c_node) != 0)) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/lxml.objectify.pyx":1635
+      /* "src/lxml/lxml.objectify.pyx":1638
  *         if not cetree.hasChild(c_node):
  *             # element has no children => data class
  *             pytype = _guessPyType(textOf(c_node), StrType)             # <<<<<<<<<<<<<<
  *         else:
  *             istree = 1
  */
-      __pyx_t_1 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_9objectify__guessPyType(__pyx_t_1, __pyx_v_StrType)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_9objectify__guessPyType(__pyx_t_1, __pyx_v_StrType)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
       __pyx_t_6 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1633
+      /* "src/lxml/lxml.objectify.pyx":1636
  *     if pytype is None:
  *         # try to guess type
  *         if not cetree.hasChild(c_node):             # <<<<<<<<<<<<<<
@@ -23548,7 +23555,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       goto __pyx_L28;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1637
+    /* "src/lxml/lxml.objectify.pyx":1640
  *             pytype = _guessPyType(textOf(c_node), StrType)
  *         else:
  *             istree = 1             # <<<<<<<<<<<<<<
@@ -23560,7 +23567,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     }
     __pyx_L28:;
 
-    /* "src/lxml/lxml.objectify.pyx":1631
+    /* "src/lxml/lxml.objectify.pyx":1634
  *                     pytype = _check_type(c_node, pytype)
  * 
  *     if pytype is None:             # <<<<<<<<<<<<<<
@@ -23569,7 +23576,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1639
+  /* "src/lxml/lxml.objectify.pyx":1642
  *             istree = 1
  * 
  *     if pytype is None:             # <<<<<<<<<<<<<<
@@ -23580,7 +23587,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/lxml.objectify.pyx":1641
+    /* "src/lxml/lxml.objectify.pyx":1644
  *     if pytype is None:
  *         # use default type for empty elements
  *         if cetree.hasText(c_node):             # <<<<<<<<<<<<<<
@@ -23590,7 +23597,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __pyx_t_3 = (hasText(__pyx_v_c_node) != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/lxml.objectify.pyx":1642
+      /* "src/lxml/lxml.objectify.pyx":1645
  *         # use default type for empty elements
  *         if cetree.hasText(c_node):
  *             pytype = StrType             # <<<<<<<<<<<<<<
@@ -23600,7 +23607,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __Pyx_INCREF(((PyObject *)__pyx_v_StrType));
       __Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_StrType);
 
-      /* "src/lxml/lxml.objectify.pyx":1641
+      /* "src/lxml/lxml.objectify.pyx":1644
  *     if pytype is None:
  *         # use default type for empty elements
  *         if cetree.hasText(c_node):             # <<<<<<<<<<<<<<
@@ -23610,7 +23617,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       goto __pyx_L30;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1644
+    /* "src/lxml/lxml.objectify.pyx":1647
  *             pytype = StrType
  *         else:
  *             pytype = empty_pytype             # <<<<<<<<<<<<<<
@@ -23621,7 +23628,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __Pyx_INCREF(((PyObject *)__pyx_v_empty_pytype));
       __Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_empty_pytype);
 
-      /* "src/lxml/lxml.objectify.pyx":1645
+      /* "src/lxml/lxml.objectify.pyx":1648
  *         else:
  *             pytype = empty_pytype
  *             if typename is None:             # <<<<<<<<<<<<<<
@@ -23632,7 +23639,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __pyx_t_2 = (__pyx_t_3 != 0);
       if (__pyx_t_2) {
 
-        /* "src/lxml/lxml.objectify.pyx":1646
+        /* "src/lxml/lxml.objectify.pyx":1649
  *             pytype = empty_pytype
  *             if typename is None:
  *                 typename = empty_type_name             # <<<<<<<<<<<<<<
@@ -23642,7 +23649,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __Pyx_INCREF(__pyx_v_empty_type_name);
         __Pyx_DECREF_SET(__pyx_v_typename, __pyx_v_empty_type_name);
 
-        /* "src/lxml/lxml.objectify.pyx":1645
+        /* "src/lxml/lxml.objectify.pyx":1648
  *         else:
  *             pytype = empty_pytype
  *             if typename is None:             # <<<<<<<<<<<<<<
@@ -23653,7 +23660,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     }
     __pyx_L30:;
 
-    /* "src/lxml/lxml.objectify.pyx":1639
+    /* "src/lxml/lxml.objectify.pyx":1642
  *             istree = 1
  * 
  *     if pytype is None:             # <<<<<<<<<<<<<<
@@ -23662,7 +23669,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1648
+  /* "src/lxml/lxml.objectify.pyx":1651
  *                 typename = empty_type_name
  * 
  *     if pytype is not None:             # <<<<<<<<<<<<<<
@@ -23673,7 +23680,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/lxml.objectify.pyx":1649
+    /* "src/lxml/lxml.objectify.pyx":1652
  * 
  *     if pytype is not None:
  *         if typename is None:             # <<<<<<<<<<<<<<
@@ -23684,7 +23691,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/lxml.objectify.pyx":1650
+      /* "src/lxml/lxml.objectify.pyx":1653
  *     if pytype is not None:
  *         if typename is None:
  *             if not istree:             # <<<<<<<<<<<<<<
@@ -23694,7 +23701,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __pyx_t_2 = ((!(__pyx_v_istree != 0)) != 0);
       if (__pyx_t_2) {
 
-        /* "src/lxml/lxml.objectify.pyx":1651
+        /* "src/lxml/lxml.objectify.pyx":1654
  *         if typename is None:
  *             if not istree:
  *                 if pytype._schema_types:             # <<<<<<<<<<<<<<
@@ -23704,7 +23711,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __pyx_t_2 = (__pyx_v_pytype->_schema_types != Py_None) && (PyList_GET_SIZE(__pyx_v_pytype->_schema_types) != 0);
         if (__pyx_t_2) {
 
-          /* "src/lxml/lxml.objectify.pyx":1654
+          /* "src/lxml/lxml.objectify.pyx":1657
  *                     # pytype->xsi:type is a 1:n mapping
  *                     # simply take the first
  *                     typename = pytype._schema_types[0]             # <<<<<<<<<<<<<<
@@ -23713,14 +23720,14 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
           if (unlikely(__pyx_v_pytype->_schema_types == Py_None)) {
             PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
-          __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_pytype->_schema_types, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1654; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+          __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_pytype->_schema_types, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1657; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF_SET(__pyx_v_typename, __pyx_t_6);
           __pyx_t_6 = 0;
 
-          /* "src/lxml/lxml.objectify.pyx":1651
+          /* "src/lxml/lxml.objectify.pyx":1654
  *         if typename is None:
  *             if not istree:
  *                 if pytype._schema_types:             # <<<<<<<<<<<<<<
@@ -23729,7 +23736,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         }
 
-        /* "src/lxml/lxml.objectify.pyx":1650
+        /* "src/lxml/lxml.objectify.pyx":1653
  *     if pytype is not None:
  *         if typename is None:
  *             if not istree:             # <<<<<<<<<<<<<<
@@ -23738,7 +23745,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1649
+      /* "src/lxml/lxml.objectify.pyx":1652
  * 
  *     if pytype is not None:
  *         if typename is None:             # <<<<<<<<<<<<<<
@@ -23748,18 +23755,18 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       goto __pyx_L33;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1655
+    /* "src/lxml/lxml.objectify.pyx":1658
  *                     # simply take the first
  *                     typename = pytype._schema_types[0]
  *         elif typename not in pytype._schema_types:             # <<<<<<<<<<<<<<
  *             typename = pytype._schema_types[0]
  * 
  */
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_typename, __pyx_v_pytype->_schema_types, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_typename, __pyx_v_pytype->_schema_types, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/lxml.objectify.pyx":1656
+      /* "src/lxml/lxml.objectify.pyx":1659
  *                     typename = pytype._schema_types[0]
  *         elif typename not in pytype._schema_types:
  *             typename = pytype._schema_types[0]             # <<<<<<<<<<<<<<
@@ -23768,14 +23775,14 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       if (unlikely(__pyx_v_pytype->_schema_types == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_pytype->_schema_types, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1656; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_pytype->_schema_types, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF_SET(__pyx_v_typename, __pyx_t_6);
       __pyx_t_6 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1655
+      /* "src/lxml/lxml.objectify.pyx":1658
  *                     # simply take the first
  *                     typename = pytype._schema_types[0]
  *         elif typename not in pytype._schema_types:             # <<<<<<<<<<<<<<
@@ -23785,7 +23792,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     }
     __pyx_L33:;
 
-    /* "src/lxml/lxml.objectify.pyx":1648
+    /* "src/lxml/lxml.objectify.pyx":1651
  *                 typename = empty_type_name
  * 
  *     if pytype is not None:             # <<<<<<<<<<<<<<
@@ -23794,7 +23801,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1658
+  /* "src/lxml/lxml.objectify.pyx":1661
  *             typename = pytype._schema_types[0]
  * 
  *     if annotate_xsi:             # <<<<<<<<<<<<<<
@@ -23804,7 +23811,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_t_3 = (__pyx_v_annotate_xsi != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/lxml.objectify.pyx":1659
+    /* "src/lxml/lxml.objectify.pyx":1662
  * 
  *     if annotate_xsi:
  *         if typename is None or istree:             # <<<<<<<<<<<<<<
@@ -23823,7 +23830,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __pyx_L38_bool_binop_done:;
     if (__pyx_t_3) {
 
-      /* "src/lxml/lxml.objectify.pyx":1660
+      /* "src/lxml/lxml.objectify.pyx":1663
  *     if annotate_xsi:
  *         if typename is None or istree:
  *             cetree.delAttributeFromNsName(             # <<<<<<<<<<<<<<
@@ -23832,7 +23839,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       delAttributeFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)__pyx_k_type)));
 
-      /* "src/lxml/lxml.objectify.pyx":1659
+      /* "src/lxml/lxml.objectify.pyx":1662
  * 
  *     if annotate_xsi:
  *         if typename is None or istree:             # <<<<<<<<<<<<<<
@@ -23842,7 +23849,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       goto __pyx_L37;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1664
+    /* "src/lxml/lxml.objectify.pyx":1667
  *         else:
  *             # update or create attribute
  *             typename_utf8 = cetree.utf8(typename)             # <<<<<<<<<<<<<<
@@ -23850,12 +23857,12 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
  */
     /*else*/ {
-      __pyx_t_6 = utf8(__pyx_v_typename); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = utf8(__pyx_v_typename); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_v_typename_utf8 = __pyx_t_6;
       __pyx_t_6 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1665
+      /* "src/lxml/lxml.objectify.pyx":1668
  *             # update or create attribute
  *             typename_utf8 = cetree.utf8(typename)
  *             c_ns = cetree.findOrBuildNodeNsPrefix(             # <<<<<<<<<<<<<<
@@ -23864,7 +23871,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       __pyx_v_c_ns = findOrBuildNodeNsPrefix(__pyx_v_doc, __pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_NS, ((unsigned char *)((unsigned char *)__pyx_k_xsd)));
 
-      /* "src/lxml/lxml.objectify.pyx":1667
+      /* "src/lxml/lxml.objectify.pyx":1670
  *             c_ns = cetree.findOrBuildNodeNsPrefix(
  *                 doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
  *             if c_ns is not NULL:             # <<<<<<<<<<<<<<
@@ -23874,27 +23881,27 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __pyx_t_3 = ((__pyx_v_c_ns != NULL) != 0);
       if (__pyx_t_3) {
 
-        /* "src/lxml/lxml.objectify.pyx":1668
+        /* "src/lxml/lxml.objectify.pyx":1671
  *                 doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
  *             if c_ns is not NULL:
  *                 if b':' in typename_utf8:             # <<<<<<<<<<<<<<
  *                     prefix, name = typename_utf8.split(b':', 1)
  *                     if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
  */
-        __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__12, __pyx_v_typename_utf8, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__12, __pyx_v_typename_utf8, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_4 = (__pyx_t_3 != 0);
         if (__pyx_t_4) {
 
-          /* "src/lxml/lxml.objectify.pyx":1669
+          /* "src/lxml/lxml.objectify.pyx":1672
  *             if c_ns is not NULL:
  *                 if b':' in typename_utf8:
  *                     prefix, name = typename_utf8.split(b':', 1)             # <<<<<<<<<<<<<<
  *                     if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
  *                         typename_utf8 = name
  */
-          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_typename_utf8, __pyx_n_s_split); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_typename_utf8, __pyx_n_s_split); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
@@ -23907,7 +23914,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
             if (unlikely(size != 2)) {
               if (size > 2) __Pyx_RaiseTooManyValuesError(2);
               else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             #if CYTHON_COMPILING_IN_CPYTHON
             if (likely(PyTuple_CheckExact(sequence))) {
@@ -23920,15 +23927,15 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
             __Pyx_INCREF(__pyx_t_6);
             __Pyx_INCREF(__pyx_t_5);
             #else
-            __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_6);
-            __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_5);
             #endif
             __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
           } else {
             Py_ssize_t index = -1;
-            __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_7);
             __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
             __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
@@ -23936,7 +23943,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
             __Pyx_GOTREF(__pyx_t_6);
             index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L42_unpacking_failed;
             __Pyx_GOTREF(__pyx_t_5);
-            if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __pyx_t_8 = NULL;
             __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
             goto __pyx_L43_unpacking_done;
@@ -23944,7 +23951,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
             __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
             __pyx_t_8 = NULL;
             if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __pyx_L43_unpacking_done:;
           }
           __Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_6);
@@ -23952,7 +23959,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __pyx_v_name = __pyx_t_5;
           __pyx_t_5 = 0;
 
-          /* "src/lxml/lxml.objectify.pyx":1670
+          /* "src/lxml/lxml.objectify.pyx":1673
  *                 if b':' in typename_utf8:
  *                     prefix, name = typename_utf8.split(b':', 1)
  *                     if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':             # <<<<<<<<<<<<<<
@@ -23970,7 +23977,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __pyx_L45_bool_binop_done:;
           if (__pyx_t_4) {
 
-            /* "src/lxml/lxml.objectify.pyx":1671
+            /* "src/lxml/lxml.objectify.pyx":1674
  *                     prefix, name = typename_utf8.split(b':', 1)
  *                     if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
  *                         typename_utf8 = name             # <<<<<<<<<<<<<<
@@ -23980,7 +23987,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
             __Pyx_INCREF(__pyx_v_name);
             __Pyx_DECREF_SET(__pyx_v_typename_utf8, __pyx_v_name);
 
-            /* "src/lxml/lxml.objectify.pyx":1670
+            /* "src/lxml/lxml.objectify.pyx":1673
  *                 if b':' in typename_utf8:
  *                     prefix, name = typename_utf8.split(b':', 1)
  *                     if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':             # <<<<<<<<<<<<<<
@@ -23990,7 +23997,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
             goto __pyx_L44;
           }
 
-          /* "src/lxml/lxml.objectify.pyx":1672
+          /* "src/lxml/lxml.objectify.pyx":1675
  *                     if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
  *                         typename_utf8 = name
  *                     elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0:             # <<<<<<<<<<<<<<
@@ -24000,25 +24007,25 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __pyx_t_4 = ((xmlStrcmp((const xmlChar*)PyBytes_AS_STRING(__pyx_v_prefix), __pyx_v_c_ns->prefix) != 0) != 0);
           if (__pyx_t_4) {
 
-            /* "src/lxml/lxml.objectify.pyx":1673
+            /* "src/lxml/lxml.objectify.pyx":1676
  *                         typename_utf8 = name
  *                     elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0:
  *                         typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + name             # <<<<<<<<<<<<<<
  *                 elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0':
  *                     typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + typename_utf8
  */
-            __pyx_t_1 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_ns->prefix)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_ns->prefix)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_1);
-            __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_kp_b__12); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_kp_b__12); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_5);
             __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            __pyx_t_1 = PyNumber_Add(__pyx_t_5, __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = PyNumber_Add(__pyx_t_5, __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_1);
             __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
             __Pyx_DECREF_SET(__pyx_v_typename_utf8, __pyx_t_1);
             __pyx_t_1 = 0;
 
-            /* "src/lxml/lxml.objectify.pyx":1672
+            /* "src/lxml/lxml.objectify.pyx":1675
  *                     if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
  *                         typename_utf8 = name
  *                     elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0:             # <<<<<<<<<<<<<<
@@ -24028,7 +24035,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           }
           __pyx_L44:;
 
-          /* "src/lxml/lxml.objectify.pyx":1668
+          /* "src/lxml/lxml.objectify.pyx":1671
  *                 doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
  *             if c_ns is not NULL:
  *                 if b':' in typename_utf8:             # <<<<<<<<<<<<<<
@@ -24038,7 +24045,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           goto __pyx_L41;
         }
 
-        /* "src/lxml/lxml.objectify.pyx":1674
+        /* "src/lxml/lxml.objectify.pyx":1677
  *                     elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0:
  *                         typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + name
  *                 elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0':             # <<<<<<<<<<<<<<
@@ -24056,25 +24063,25 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __pyx_L47_bool_binop_done:;
         if (__pyx_t_4) {
 
-          /* "src/lxml/lxml.objectify.pyx":1675
+          /* "src/lxml/lxml.objectify.pyx":1678
  *                         typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + name
  *                 elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0':
  *                     typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + typename_utf8             # <<<<<<<<<<<<<<
  *             c_ns = cetree.findOrBuildNodeNsPrefix(
  *                 doc, c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>'xsi')
  */
-          __pyx_t_1 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_ns->prefix)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_ns->prefix)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_1);
-          __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_kp_b__12); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_kp_b__12); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_5);
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __pyx_t_1 = PyNumber_Add(__pyx_t_5, __pyx_v_typename_utf8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PyNumber_Add(__pyx_t_5, __pyx_v_typename_utf8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
           __Pyx_DECREF_SET(__pyx_v_typename_utf8, __pyx_t_1);
           __pyx_t_1 = 0;
 
-          /* "src/lxml/lxml.objectify.pyx":1674
+          /* "src/lxml/lxml.objectify.pyx":1677
  *                     elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0:
  *                         typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + name
  *                 elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0':             # <<<<<<<<<<<<<<
@@ -24084,7 +24091,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         }
         __pyx_L41:;
 
-        /* "src/lxml/lxml.objectify.pyx":1667
+        /* "src/lxml/lxml.objectify.pyx":1670
  *             c_ns = cetree.findOrBuildNodeNsPrefix(
  *                 doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
  *             if c_ns is not NULL:             # <<<<<<<<<<<<<<
@@ -24093,7 +24100,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1676
+      /* "src/lxml/lxml.objectify.pyx":1679
  *                 elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0':
  *                     typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + typename_utf8
  *             c_ns = cetree.findOrBuildNodeNsPrefix(             # <<<<<<<<<<<<<<
@@ -24102,7 +24109,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       __pyx_v_c_ns = findOrBuildNodeNsPrefix(__pyx_v_doc, __pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)__pyx_k_xsi_2)));
 
-      /* "src/lxml/lxml.objectify.pyx":1678
+      /* "src/lxml/lxml.objectify.pyx":1681
  *             c_ns = cetree.findOrBuildNodeNsPrefix(
  *                 doc, c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>'xsi')
  *             tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"type", _xcstr(typename_utf8))             # <<<<<<<<<<<<<<
@@ -24113,7 +24120,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     }
     __pyx_L37:;
 
-    /* "src/lxml/lxml.objectify.pyx":1658
+    /* "src/lxml/lxml.objectify.pyx":1661
  *             typename = pytype._schema_types[0]
  * 
  *     if annotate_xsi:             # <<<<<<<<<<<<<<
@@ -24122,7 +24129,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1680
+  /* "src/lxml/lxml.objectify.pyx":1683
  *             tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"type", _xcstr(typename_utf8))
  * 
  *     if annotate_pytype:             # <<<<<<<<<<<<<<
@@ -24132,7 +24139,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_t_4 = (__pyx_v_annotate_pytype != 0);
   if (__pyx_t_4) {
 
-    /* "src/lxml/lxml.objectify.pyx":1681
+    /* "src/lxml/lxml.objectify.pyx":1684
  * 
  *     if annotate_pytype:
  *         if pytype is None:             # <<<<<<<<<<<<<<
@@ -24143,7 +24150,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __pyx_t_3 = (__pyx_t_4 != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/lxml.objectify.pyx":1683
+      /* "src/lxml/lxml.objectify.pyx":1686
  *         if pytype is None:
  *             # delete attribute if it exists
  *             cetree.delAttributeFromNsName(             # <<<<<<<<<<<<<<
@@ -24152,7 +24159,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       delAttributeFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME);
 
-      /* "src/lxml/lxml.objectify.pyx":1681
+      /* "src/lxml/lxml.objectify.pyx":1684
  * 
  *     if annotate_pytype:
  *         if pytype is None:             # <<<<<<<<<<<<<<
@@ -24162,7 +24169,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       goto __pyx_L50;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1687
+    /* "src/lxml/lxml.objectify.pyx":1690
  *         else:
  *             # update or create attribute
  *             c_ns = cetree.findOrBuildNodeNsPrefix(             # <<<<<<<<<<<<<<
@@ -24171,7 +24178,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
     /*else*/ {
 
-      /* "src/lxml/lxml.objectify.pyx":1688
+      /* "src/lxml/lxml.objectify.pyx":1691
  *             # update or create attribute
  *             c_ns = cetree.findOrBuildNodeNsPrefix(
  *                 doc, c_node, _PYTYPE_NAMESPACE, <unsigned char*>'py')             # <<<<<<<<<<<<<<
@@ -24180,7 +24187,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       __pyx_v_c_ns = findOrBuildNodeNsPrefix(__pyx_v_doc, __pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, ((unsigned char *)((unsigned char *)__pyx_k_py_2)));
 
-      /* "src/lxml/lxml.objectify.pyx":1689
+      /* "src/lxml/lxml.objectify.pyx":1692
  *             c_ns = cetree.findOrBuildNodeNsPrefix(
  *                 doc, c_node, _PYTYPE_NAMESPACE, <unsigned char*>'py')
  *             pytype_name = cetree.utf8(pytype.name)             # <<<<<<<<<<<<<<
@@ -24189,13 +24196,13 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       __pyx_t_1 = __pyx_v_pytype->name;
       __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_5 = utf8(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = utf8(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1692; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_v_pytype_name = ((PyObject*)__pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1690
+      /* "src/lxml/lxml.objectify.pyx":1693
  *                 doc, c_node, _PYTYPE_NAMESPACE, <unsigned char*>'py')
  *             pytype_name = cetree.utf8(pytype.name)
  *             tree.xmlSetNsProp(c_node, c_ns, _PYTYPE_ATTRIBUTE_NAME,             # <<<<<<<<<<<<<<
@@ -24204,7 +24211,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       xmlSetNsProp(__pyx_v_c_node, __pyx_v_c_ns, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_pytype_name));
 
-      /* "src/lxml/lxml.objectify.pyx":1692
+      /* "src/lxml/lxml.objectify.pyx":1695
  *             tree.xmlSetNsProp(c_node, c_ns, _PYTYPE_ATTRIBUTE_NAME,
  *                               _xcstr(pytype_name))
  *             if pytype is NoneType:             # <<<<<<<<<<<<<<
@@ -24215,7 +24222,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __pyx_t_4 = (__pyx_t_3 != 0);
       if (__pyx_t_4) {
 
-        /* "src/lxml/lxml.objectify.pyx":1693
+        /* "src/lxml/lxml.objectify.pyx":1696
  *                               _xcstr(pytype_name))
  *             if pytype is NoneType:
  *                 c_ns = cetree.findOrBuildNodeNsPrefix(             # <<<<<<<<<<<<<<
@@ -24224,7 +24231,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         __pyx_v_c_ns = findOrBuildNodeNsPrefix(__pyx_v_doc, __pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)__pyx_k_xsi_2)));
 
-        /* "src/lxml/lxml.objectify.pyx":1695
+        /* "src/lxml/lxml.objectify.pyx":1698
  *                 c_ns = cetree.findOrBuildNodeNsPrefix(
  *                     doc, c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>'xsi')
  *                 tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"nil", <unsigned char*>"true")             # <<<<<<<<<<<<<<
@@ -24233,7 +24240,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         xmlSetNsProp(__pyx_v_c_node, __pyx_v_c_ns, ((unsigned char *)((unsigned char *)__pyx_k_nil)), ((unsigned char *)((unsigned char *)__pyx_k_true)));
 
-        /* "src/lxml/lxml.objectify.pyx":1692
+        /* "src/lxml/lxml.objectify.pyx":1695
  *             tree.xmlSetNsProp(c_node, c_ns, _PYTYPE_ATTRIBUTE_NAME,
  *                               _xcstr(pytype_name))
  *             if pytype is NoneType:             # <<<<<<<<<<<<<<
@@ -24244,7 +24251,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     }
     __pyx_L50:;
 
-    /* "src/lxml/lxml.objectify.pyx":1680
+    /* "src/lxml/lxml.objectify.pyx":1683
  *             tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"type", _xcstr(typename_utf8))
  * 
  *     if annotate_pytype:             # <<<<<<<<<<<<<<
@@ -24253,7 +24260,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1697
+  /* "src/lxml/lxml.objectify.pyx":1700
  *                 tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"nil", <unsigned char*>"true")
  * 
  *     return 0             # <<<<<<<<<<<<<<
@@ -24263,7 +24270,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1578
+  /* "src/lxml/lxml.objectify.pyx":1581
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  * 
  * cdef int _annotate_element(tree.xmlNode* c_node, _Document doc,             # <<<<<<<<<<<<<<
@@ -24291,7 +24298,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1702
+/* "src/lxml/lxml.objectify.pyx":1705
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,             # <<<<<<<<<<<<<<
@@ -24340,7 +24347,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_27deannotate(PyObject *__pyx_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "deannotate") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "deannotate") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -24349,20 +24356,20 @@ static PyObject *__pyx_pw_4lxml_9objectify_27deannotate(PyObject *__pyx_self, Py
     }
     __pyx_v_element_or_tree = values[0];
     if (values[1]) {
-      __pyx_v_pytype = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_pytype == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __pyx_v_pytype = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_pytype == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     } else {
       __pyx_v_pytype = ((int)((int)1));
     }
     if (values[2]) {
-      __pyx_v_xsi = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_xsi == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __pyx_v_xsi = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_xsi == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     } else {
       __pyx_v_xsi = ((int)((int)1));
     }
     if (values[3]) {
-      __pyx_v_xsi_nil = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_xsi_nil == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1703; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __pyx_v_xsi_nil = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_xsi_nil == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     } else {
 
-      /* "src/lxml/lxml.objectify.pyx":1703
+      /* "src/lxml/lxml.objectify.pyx":1706
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,
  *                bint xsi_nil=False, bint cleanup_namespaces=False):             # <<<<<<<<<<<<<<
@@ -24372,14 +24379,14 @@ static PyObject *__pyx_pw_4lxml_9objectify_27deannotate(PyObject *__pyx_self, Py
       __pyx_v_xsi_nil = ((int)((int)0));
     }
     if (values[4]) {
-      __pyx_v_cleanup_namespaces = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_cleanup_namespaces == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1703; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __pyx_v_cleanup_namespaces = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_cleanup_namespaces == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     } else {
       __pyx_v_cleanup_namespaces = ((int)((int)0));
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("deannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("deannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.deannotate", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -24387,7 +24394,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_27deannotate(PyObject *__pyx_self, Py
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_9objectify_26deannotate(__pyx_self, __pyx_v_element_or_tree, __pyx_v_pytype, __pyx_v_xsi, __pyx_v_xsi_nil, __pyx_v_cleanup_namespaces);
 
-  /* "src/lxml/lxml.objectify.pyx":1702
+  /* "src/lxml/lxml.objectify.pyx":1705
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,             # <<<<<<<<<<<<<<
@@ -24415,19 +24422,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("deannotate", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1719
+  /* "src/lxml/lxml.objectify.pyx":1722
  *     the tree, pass the option ``cleanup_namespaces=True``.
  *     """
  *     cdef list attribute_names = []             # <<<<<<<<<<<<<<
  * 
  *     if pytype:
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_attribute_names = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1721
+  /* "src/lxml/lxml.objectify.pyx":1724
  *     cdef list attribute_names = []
  * 
  *     if pytype:             # <<<<<<<<<<<<<<
@@ -24437,19 +24444,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
   __pyx_t_2 = (__pyx_v_pytype != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1722
+    /* "src/lxml/lxml.objectify.pyx":1725
  * 
  *     if pytype:
  *         attribute_names.append(PYTYPE_ATTRIBUTE)             # <<<<<<<<<<<<<<
  *     if xsi:
  *         attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1721
+    /* "src/lxml/lxml.objectify.pyx":1724
  *     cdef list attribute_names = []
  * 
  *     if pytype:             # <<<<<<<<<<<<<<
@@ -24458,7 +24465,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1723
+  /* "src/lxml/lxml.objectify.pyx":1726
  *     if pytype:
  *         attribute_names.append(PYTYPE_ATTRIBUTE)
  *     if xsi:             # <<<<<<<<<<<<<<
@@ -24468,7 +24475,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
   __pyx_t_2 = (__pyx_v_xsi != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1724
+    /* "src/lxml/lxml.objectify.pyx":1727
  *         attribute_names.append(PYTYPE_ATTRIBUTE)
  *     if xsi:
  *         attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)             # <<<<<<<<<<<<<<
@@ -24477,10 +24484,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  */
     __pyx_t_1 = __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR;
     __Pyx_INCREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1723
+    /* "src/lxml/lxml.objectify.pyx":1726
  *     if pytype:
  *         attribute_names.append(PYTYPE_ATTRIBUTE)
  *     if xsi:             # <<<<<<<<<<<<<<
@@ -24489,7 +24496,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1725
+  /* "src/lxml/lxml.objectify.pyx":1728
  *     if xsi:
  *         attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)
  *     if xsi_nil:             # <<<<<<<<<<<<<<
@@ -24499,7 +24506,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
   __pyx_t_2 = (__pyx_v_xsi_nil != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1726
+    /* "src/lxml/lxml.objectify.pyx":1729
  *         attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)
  *     if xsi_nil:
  *         attribute_names.append(XML_SCHEMA_INSTANCE_NIL_ATTR)             # <<<<<<<<<<<<<<
@@ -24508,10 +24515,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  */
     __pyx_t_1 = __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NIL_ATTR;
     __Pyx_INCREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1725
+    /* "src/lxml/lxml.objectify.pyx":1728
  *     if xsi:
  *         attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)
  *     if xsi_nil:             # <<<<<<<<<<<<<<
@@ -24520,30 +24527,30 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1728
+  /* "src/lxml/lxml.objectify.pyx":1731
  *         attribute_names.append(XML_SCHEMA_INSTANCE_NIL_ATTR)
  * 
  *     _strip_attributes(element_or_tree, *attribute_names)             # <<<<<<<<<<<<<<
  *     if cleanup_namespaces:
  *         _cleanup_namespaces(element_or_tree)
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1728; __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 = 1731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_element_or_tree);
   __Pyx_GIVEREF(__pyx_v_element_or_tree);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_element_or_tree);
-  __pyx_t_4 = PySequence_Tuple(__pyx_v_attribute_names); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PySequence_Tuple(__pyx_v_attribute_names); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__strip_attributes, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__strip_attributes, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1729
+  /* "src/lxml/lxml.objectify.pyx":1732
  * 
  *     _strip_attributes(element_or_tree, *attribute_names)
  *     if cleanup_namespaces:             # <<<<<<<<<<<<<<
@@ -24553,7 +24560,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
   __pyx_t_2 = (__pyx_v_cleanup_namespaces != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1730
+    /* "src/lxml/lxml.objectify.pyx":1733
  *     _strip_attributes(element_or_tree, *attribute_names)
  *     if cleanup_namespaces:
  *         _cleanup_namespaces(element_or_tree)             # <<<<<<<<<<<<<<
@@ -24572,23 +24579,23 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
       }
     }
     if (!__pyx_t_1) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_element_or_tree); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_element_or_tree); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
       __Pyx_INCREF(__pyx_v_element_or_tree);
       __Pyx_GIVEREF(__pyx_v_element_or_tree);
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_element_or_tree);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1729
+    /* "src/lxml/lxml.objectify.pyx":1732
  * 
  *     _strip_attributes(element_or_tree, *attribute_names)
  *     if cleanup_namespaces:             # <<<<<<<<<<<<<<
@@ -24597,7 +24604,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1702
+  /* "src/lxml/lxml.objectify.pyx":1705
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,             # <<<<<<<<<<<<<<
@@ -24622,7 +24629,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1742
+/* "src/lxml/lxml.objectify.pyx":1745
  * objectify_parser = __DEFAULT_PARSER
  * 
  * def set_default_parser(new_parser = None):             # <<<<<<<<<<<<<<
@@ -24663,7 +24670,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_29set_default_parser(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_default_parser") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_default_parser") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -24676,7 +24683,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_29set_default_parser(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("set_default_parser", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("set_default_parser", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.set_default_parser", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -24700,7 +24707,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("set_default_parser", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1753
+  /* "src/lxml/lxml.objectify.pyx":1756
  *     """
  *     global objectify_parser
  *     if new_parser is None:             # <<<<<<<<<<<<<<
@@ -24711,7 +24718,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1754
+    /* "src/lxml/lxml.objectify.pyx":1757
  *     global objectify_parser
  *     if new_parser is None:
  *         objectify_parser = __DEFAULT_PARSER             # <<<<<<<<<<<<<<
@@ -24723,7 +24730,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
     __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_objectify_parser, __pyx_v_4lxml_9objectify___DEFAULT_PARSER);
     __Pyx_GIVEREF(__pyx_v_4lxml_9objectify___DEFAULT_PARSER);
 
-    /* "src/lxml/lxml.objectify.pyx":1753
+    /* "src/lxml/lxml.objectify.pyx":1756
  *     """
  *     global objectify_parser
  *     if new_parser is None:             # <<<<<<<<<<<<<<
@@ -24733,21 +24740,21 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
     goto __pyx_L3;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1755
+  /* "src/lxml/lxml.objectify.pyx":1758
  *     if new_parser is None:
  *         objectify_parser = __DEFAULT_PARSER
  *     elif isinstance(new_parser, etree.XMLParser):             # <<<<<<<<<<<<<<
  *         objectify_parser = new_parser
  *     else:
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = PyObject_IsInstance(__pyx_v_new_parser, __pyx_t_3); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_IsInstance(__pyx_v_new_parser, __pyx_t_3); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/lxml.objectify.pyx":1756
+    /* "src/lxml/lxml.objectify.pyx":1759
  *         objectify_parser = __DEFAULT_PARSER
  *     elif isinstance(new_parser, etree.XMLParser):
  *         objectify_parser = new_parser             # <<<<<<<<<<<<<<
@@ -24759,7 +24766,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
     __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_objectify_parser, __pyx_v_new_parser);
     __Pyx_GIVEREF(__pyx_v_new_parser);
 
-    /* "src/lxml/lxml.objectify.pyx":1755
+    /* "src/lxml/lxml.objectify.pyx":1758
  *     if new_parser is None:
  *         objectify_parser = __DEFAULT_PARSER
  *     elif isinstance(new_parser, etree.XMLParser):             # <<<<<<<<<<<<<<
@@ -24769,7 +24776,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
     goto __pyx_L3;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1758
+  /* "src/lxml/lxml.objectify.pyx":1761
  *         objectify_parser = new_parser
  *     else:
  *         raise TypeError, u"parser must inherit from lxml.etree.XMLParser"             # <<<<<<<<<<<<<<
@@ -24778,11 +24785,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
  */
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_parser_must_inherit_from_lxml_et, 0, 0);
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_L3:;
 
-  /* "src/lxml/lxml.objectify.pyx":1742
+  /* "src/lxml/lxml.objectify.pyx":1745
  * objectify_parser = __DEFAULT_PARSER
  * 
  * def set_default_parser(new_parser = None):             # <<<<<<<<<<<<<<
@@ -24803,7 +24810,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1760
+/* "src/lxml/lxml.objectify.pyx":1763
  *         raise TypeError, u"parser must inherit from lxml.etree.XMLParser"
  * 
  * def makeparser(**kw):             # <<<<<<<<<<<<<<
@@ -24849,27 +24856,27 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("makeparser", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1770
+  /* "src/lxml/lxml.objectify.pyx":1773
  *     ``remove_blank_text`` boolean keyword option yourself.
  *     """
  *     if 'remove_blank_text' not in kw:             # <<<<<<<<<<<<<<
  *         kw['remove_blank_text'] = True
  *     parser = etree.XMLParser(**kw)
  */
-  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_n_s_remove_blank_text, __pyx_v_kw, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_n_s_remove_blank_text, __pyx_v_kw, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1771
+    /* "src/lxml/lxml.objectify.pyx":1774
  *     """
  *     if 'remove_blank_text' not in kw:
  *         kw['remove_blank_text'] = True             # <<<<<<<<<<<<<<
  *     parser = etree.XMLParser(**kw)
  *     parser.set_element_class_lookup( ObjectifyElementClassLookup() )
  */
-    if (unlikely(PyDict_SetItem(__pyx_v_kw, __pyx_n_s_remove_blank_text, Py_True) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(PyDict_SetItem(__pyx_v_kw, __pyx_n_s_remove_blank_text, Py_True) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1774; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/lxml.objectify.pyx":1770
+    /* "src/lxml/lxml.objectify.pyx":1773
  *     ``remove_blank_text`` boolean keyword option yourself.
  *     """
  *     if 'remove_blank_text' not in kw:             # <<<<<<<<<<<<<<
@@ -24878,31 +24885,31 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1772
+  /* "src/lxml/lxml.objectify.pyx":1775
  *     if 'remove_blank_text' not in kw:
  *         kw['remove_blank_text'] = True
  *     parser = etree.XMLParser(**kw)             # <<<<<<<<<<<<<<
  *     parser.set_element_class_lookup( ObjectifyElementClassLookup() )
  *     return parser
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_v_kw); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_v_kw); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_parser = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1773
+  /* "src/lxml/lxml.objectify.pyx":1776
  *         kw['remove_blank_text'] = True
  *     parser = etree.XMLParser(**kw)
  *     parser.set_element_class_lookup( ObjectifyElementClassLookup() )             # <<<<<<<<<<<<<<
  *     return parser
  * 
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_parser, __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_parser, __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifyElementClassLookup), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifyElementClassLookup), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -24915,24 +24922,24 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
     }
   }
   if (!__pyx_t_6) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_4);
   } else {
-    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
     __Pyx_GIVEREF(__pyx_t_5);
     PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
     __pyx_t_5 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1774
+  /* "src/lxml/lxml.objectify.pyx":1777
  *     parser = etree.XMLParser(**kw)
  *     parser.set_element_class_lookup( ObjectifyElementClassLookup() )
  *     return parser             # <<<<<<<<<<<<<<
@@ -24944,7 +24951,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
   __pyx_r = __pyx_v_parser;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1760
+  /* "src/lxml/lxml.objectify.pyx":1763
  *         raise TypeError, u"parser must inherit from lxml.etree.XMLParser"
  * 
  * def makeparser(**kw):             # <<<<<<<<<<<<<<
@@ -24968,7 +24975,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1776
+/* "src/lxml/lxml.objectify.pyx":1779
  *     return parser
  * 
  * cdef _Element _makeElement(tag, text, attrib, nsmap):             # <<<<<<<<<<<<<<
@@ -24986,7 +24993,7 @@ static struct LxmlElement *__pyx_f_4lxml_9objectify__makeElement(PyObject *__pyx
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_makeElement", 0);
 
-  /* "src/lxml/lxml.objectify.pyx":1777
+  /* "src/lxml/lxml.objectify.pyx":1780
  * 
  * cdef _Element _makeElement(tag, text, attrib, nsmap):
  *     return cetree.makeElement(tag, None, objectify_parser, text, None, attrib, nsmap)             # <<<<<<<<<<<<<<
@@ -24996,14 +25003,14 @@ static struct LxmlElement *__pyx_f_4lxml_9objectify__makeElement(PyObject *__pyx
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_t_1 = __pyx_v_4lxml_9objectify_objectify_parser;
   __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_2 = ((PyObject *)makeElement(__pyx_v_tag, ((struct LxmlDocument *)Py_None), __pyx_t_1, __pyx_v_text, Py_None, __pyx_v_attrib, __pyx_v_nsmap)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((PyObject *)makeElement(__pyx_v_tag, ((struct LxmlDocument *)Py_None), __pyx_t_1, __pyx_v_text, Py_None, __pyx_v_attrib, __pyx_v_nsmap)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = ((struct LxmlElement *)__pyx_t_2);
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1776
+  /* "src/lxml/lxml.objectify.pyx":1779
  *     return parser
  * 
  * cdef _Element _makeElement(tag, text, attrib, nsmap):             # <<<<<<<<<<<<<<
@@ -25023,7 +25030,7 @@ static struct LxmlElement *__pyx_f_4lxml_9objectify__makeElement(PyObject *__pyx
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1787
+/* "src/lxml/lxml.objectify.pyx":1790
  * SubElement = etree.SubElement
  * 
  * def fromstring(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -25076,7 +25083,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_33fromstring(PyObject *__pyx_self, Py
         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 = 1787; __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 = 1790; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -25092,7 +25099,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_33fromstring(PyObject *__pyx_self, Py
   }
   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 = 1787; __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 = 1790; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.fromstring", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -25119,7 +25126,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
   __Pyx_RefNannySetupContext("fromstring", 0);
   __Pyx_INCREF(__pyx_v_parser);
 
-  /* "src/lxml/lxml.objectify.pyx":1799
+  /* "src/lxml/lxml.objectify.pyx":1802
  *     (DTD, XInclude, ...).
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -25130,7 +25137,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1800
+    /* "src/lxml/lxml.objectify.pyx":1803
  *     """
  *     if parser is None:
  *         parser = objectify_parser             # <<<<<<<<<<<<<<
@@ -25140,7 +25147,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
     __Pyx_INCREF(__pyx_v_4lxml_9objectify_objectify_parser);
     __Pyx_DECREF_SET(__pyx_v_parser, __pyx_v_4lxml_9objectify_objectify_parser);
 
-    /* "src/lxml/lxml.objectify.pyx":1799
+    /* "src/lxml/lxml.objectify.pyx":1802
  *     (DTD, XInclude, ...).
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -25149,7 +25156,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1801
+  /* "src/lxml/lxml.objectify.pyx":1804
  *     if parser is None:
  *         parser = objectify_parser
  *     return _fromstring(xml, parser, base_url=base_url)             # <<<<<<<<<<<<<<
@@ -25157,7 +25164,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
  * def XML(xml, parser=None, *, base_url=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_xml);
   __Pyx_GIVEREF(__pyx_v_xml);
@@ -25165,10 +25172,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
   __Pyx_INCREF(__pyx_v_parser);
   __Pyx_GIVEREF(__pyx_v_parser);
   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_parser);
-  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__fromstring, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__fromstring, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -25176,7 +25183,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1787
+  /* "src/lxml/lxml.objectify.pyx":1790
  * SubElement = etree.SubElement
  * 
  * def fromstring(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -25198,7 +25205,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1803
+/* "src/lxml/lxml.objectify.pyx":1806
  *     return _fromstring(xml, parser, base_url=base_url)
  * 
  * def XML(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -25251,7 +25258,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_35XML(PyObject *__pyx_self, PyObject
         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 = 1803; __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 = 1806; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -25267,7 +25274,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_35XML(PyObject *__pyx_self, PyObject
   }
   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 = 1803; __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 = 1806; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.XML", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -25294,7 +25301,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
   __Pyx_RefNannySetupContext("XML", 0);
   __Pyx_INCREF(__pyx_v_parser);
 
-  /* "src/lxml/lxml.objectify.pyx":1815
+  /* "src/lxml/lxml.objectify.pyx":1818
  *     (DTD, XInclude, ...).
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -25305,7 +25312,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1816
+    /* "src/lxml/lxml.objectify.pyx":1819
  *     """
  *     if parser is None:
  *         parser = objectify_parser             # <<<<<<<<<<<<<<
@@ -25315,7 +25322,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
     __Pyx_INCREF(__pyx_v_4lxml_9objectify_objectify_parser);
     __Pyx_DECREF_SET(__pyx_v_parser, __pyx_v_4lxml_9objectify_objectify_parser);
 
-    /* "src/lxml/lxml.objectify.pyx":1815
+    /* "src/lxml/lxml.objectify.pyx":1818
  *     (DTD, XInclude, ...).
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -25324,7 +25331,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1817
+  /* "src/lxml/lxml.objectify.pyx":1820
  *     if parser is None:
  *         parser = objectify_parser
  *     return _fromstring(xml, parser, base_url=base_url)             # <<<<<<<<<<<<<<
@@ -25332,7 +25339,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
  * cdef object _parse
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_xml);
   __Pyx_GIVEREF(__pyx_v_xml);
@@ -25340,10 +25347,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
   __Pyx_INCREF(__pyx_v_parser);
   __Pyx_GIVEREF(__pyx_v_parser);
   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_parser);
-  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__fromstring, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__fromstring, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -25351,7 +25358,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1803
+  /* "src/lxml/lxml.objectify.pyx":1806
  *     return _fromstring(xml, parser, base_url=base_url)
  * 
  * def XML(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -25373,7 +25380,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1822
+/* "src/lxml/lxml.objectify.pyx":1825
  * _parse = etree.parse
  * 
  * def parse(f, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -25426,7 +25433,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_37parse(PyObject *__pyx_self, PyObjec
         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 = 1822; __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 = 1825; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -25442,7 +25449,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_37parse(PyObject *__pyx_self, PyObjec
   }
   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 = 1822; __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 = 1825; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -25469,7 +25476,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
   __Pyx_RefNannySetupContext("parse", 0);
   __Pyx_INCREF(__pyx_v_parser);
 
-  /* "src/lxml/lxml.objectify.pyx":1833
+  /* "src/lxml/lxml.objectify.pyx":1836
  *     up external entities (DTD, XInclude, ...) with relative paths.
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -25480,7 +25487,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1834
+    /* "src/lxml/lxml.objectify.pyx":1837
  *     """
  *     if parser is None:
  *         parser = objectify_parser             # <<<<<<<<<<<<<<
@@ -25490,7 +25497,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
     __Pyx_INCREF(__pyx_v_4lxml_9objectify_objectify_parser);
     __Pyx_DECREF_SET(__pyx_v_parser, __pyx_v_4lxml_9objectify_objectify_parser);
 
-    /* "src/lxml/lxml.objectify.pyx":1833
+    /* "src/lxml/lxml.objectify.pyx":1836
  *     up external entities (DTD, XInclude, ...) with relative paths.
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -25499,7 +25506,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1835
+  /* "src/lxml/lxml.objectify.pyx":1838
  *     if parser is None:
  *         parser = objectify_parser
  *     return _parse(f, parser, base_url=base_url)             # <<<<<<<<<<<<<<
@@ -25507,7 +25514,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
  * cdef dict _DEFAULT_NSMAP = {
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_f);
   __Pyx_GIVEREF(__pyx_v_f);
@@ -25515,10 +25522,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
   __Pyx_INCREF(__pyx_v_parser);
   __Pyx_GIVEREF(__pyx_v_parser);
   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_parser);
-  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__parse, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__parse, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -25526,7 +25533,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1822
+  /* "src/lxml/lxml.objectify.pyx":1825
  * _parse = etree.parse
  * 
  * def parse(f, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -25548,7 +25555,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1845
+/* "src/lxml/lxml.objectify.pyx":1848
  * E = ElementMaker()
  * 
  * def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes):             # <<<<<<<<<<<<<<
@@ -25612,7 +25619,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_39Element(PyObject *__pyx_self, PyObj
         if (value) { values[index] = value; kw_args--; }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__attributes, values, pos_args, "Element") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__attributes, values, pos_args, "Element") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1848; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -25630,7 +25637,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_39Element(PyObject *__pyx_self, PyObj
   }
   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 = 1845; __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 = 1848; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v__attributes); __pyx_v__attributes = 0;
   __Pyx_AddTraceback("lxml.objectify.Element", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -25663,7 +25670,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
   __Pyx_INCREF(__pyx_v__pytype);
   __Pyx_INCREF(__pyx_v__attributes);
 
-  /* "src/lxml/lxml.objectify.pyx":1853
+  /* "src/lxml/lxml.objectify.pyx":1856
  *     NOTE: requires parser based element class lookup activated in lxml.etree!
  *     """
  *     if attrib is not None:             # <<<<<<<<<<<<<<
@@ -25674,42 +25681,42 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1854
+    /* "src/lxml/lxml.objectify.pyx":1857
  *     """
  *     if attrib is not None:
  *         if _attributes:             # <<<<<<<<<<<<<<
  *             attrib = dict(attrib)
  *             attrib.update(_attributes)
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_2) {
 
-      /* "src/lxml/lxml.objectify.pyx":1855
+      /* "src/lxml/lxml.objectify.pyx":1858
  *     if attrib is not None:
  *         if _attributes:
  *             attrib = dict(attrib)             # <<<<<<<<<<<<<<
  *             attrib.update(_attributes)
  *         _attributes = attrib
  */
-      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1855; __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 = 1858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_v_attrib);
       __Pyx_GIVEREF(__pyx_v_attrib);
       PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_attrib);
-      __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyDict_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyDict_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF_SET(__pyx_v_attrib, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1856
+      /* "src/lxml/lxml.objectify.pyx":1859
  *         if _attributes:
  *             attrib = dict(attrib)
  *             attrib.update(_attributes)             # <<<<<<<<<<<<<<
  *         _attributes = attrib
  *     if _pytype is None:
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_update); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_update); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_5 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25722,23 +25729,23 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
         }
       }
       if (!__pyx_t_5) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v__attributes); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v__attributes); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
       } else {
-        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
         __Pyx_INCREF(__pyx_v__attributes);
         __Pyx_GIVEREF(__pyx_v__attributes);
         PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v__attributes);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       }
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1854
+      /* "src/lxml/lxml.objectify.pyx":1857
  *     """
  *     if attrib is not None:
  *         if _attributes:             # <<<<<<<<<<<<<<
@@ -25747,7 +25754,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1857
+    /* "src/lxml/lxml.objectify.pyx":1860
  *             attrib = dict(attrib)
  *             attrib.update(_attributes)
  *         _attributes = attrib             # <<<<<<<<<<<<<<
@@ -25757,7 +25764,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
     __Pyx_INCREF(__pyx_v_attrib);
     __Pyx_DECREF_SET(__pyx_v__attributes, __pyx_v_attrib);
 
-    /* "src/lxml/lxml.objectify.pyx":1853
+    /* "src/lxml/lxml.objectify.pyx":1856
  *     NOTE: requires parser based element class lookup activated in lxml.etree!
  *     """
  *     if attrib is not None:             # <<<<<<<<<<<<<<
@@ -25766,7 +25773,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1858
+  /* "src/lxml/lxml.objectify.pyx":1861
  *             attrib.update(_attributes)
  *         _attributes = attrib
  *     if _pytype is None:             # <<<<<<<<<<<<<<
@@ -25777,7 +25784,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/lxml.objectify.pyx":1859
+    /* "src/lxml/lxml.objectify.pyx":1862
  *         _attributes = attrib
  *     if _pytype is None:
  *         _pytype = TREE_PYTYPE_NAME             # <<<<<<<<<<<<<<
@@ -25787,7 +25794,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
     __Pyx_INCREF(__pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
     __Pyx_DECREF_SET(__pyx_v__pytype, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
 
-    /* "src/lxml/lxml.objectify.pyx":1858
+    /* "src/lxml/lxml.objectify.pyx":1861
  *             attrib.update(_attributes)
  *         _attributes = attrib
  *     if _pytype is None:             # <<<<<<<<<<<<<<
@@ -25796,7 +25803,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1860
+  /* "src/lxml/lxml.objectify.pyx":1863
  *     if _pytype is None:
  *         _pytype = TREE_PYTYPE_NAME
  *     if nsmap is None:             # <<<<<<<<<<<<<<
@@ -25807,7 +25814,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1861
+    /* "src/lxml/lxml.objectify.pyx":1864
  *         _pytype = TREE_PYTYPE_NAME
  *     if nsmap is None:
  *         nsmap = _DEFAULT_NSMAP             # <<<<<<<<<<<<<<
@@ -25817,7 +25824,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
     __Pyx_INCREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
     __Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
 
-    /* "src/lxml/lxml.objectify.pyx":1860
+    /* "src/lxml/lxml.objectify.pyx":1863
  *     if _pytype is None:
  *         _pytype = TREE_PYTYPE_NAME
  *     if nsmap is None:             # <<<<<<<<<<<<<<
@@ -25826,19 +25833,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1862
+  /* "src/lxml/lxml.objectify.pyx":1865
  *     if nsmap is None:
  *         nsmap = _DEFAULT_NSMAP
  *     _attributes[PYTYPE_ATTRIBUTE] = _pytype             # <<<<<<<<<<<<<<
  *     return _makeElement(_tag, None, _attributes, nsmap)
  * 
  */
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_t_4, __pyx_v__pytype) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_t_4, __pyx_v__pytype) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1863
+  /* "src/lxml/lxml.objectify.pyx":1866
  *         nsmap = _DEFAULT_NSMAP
  *     _attributes[PYTYPE_ATTRIBUTE] = _pytype
  *     return _makeElement(_tag, None, _attributes, nsmap)             # <<<<<<<<<<<<<<
@@ -25846,13 +25853,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  * def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None,
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_v__tag, Py_None, __pyx_v__attributes, __pyx_v_nsmap)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_v__tag, Py_None, __pyx_v__attributes, __pyx_v_nsmap)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_r = __pyx_t_4;
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1845
+  /* "src/lxml/lxml.objectify.pyx":1848
  * E = ElementMaker()
  * 
  * def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes):             # <<<<<<<<<<<<<<
@@ -25878,7 +25885,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
   return __pyx_r;
 }
 
-/* "src/lxml/lxml.objectify.pyx":1865
+/* "src/lxml/lxml.objectify.pyx":1868
  *     return _makeElement(_tag, None, _attributes, nsmap)
  * 
  * def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None,             # <<<<<<<<<<<<<<
@@ -25946,7 +25953,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_41DataElement(PyObject *__pyx_self, P
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__attributes, values, pos_args, "DataElement") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__attributes, values, pos_args, "DataElement") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -25965,7 +25972,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_41DataElement(PyObject *__pyx_self, P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("DataElement", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("DataElement", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v__attributes); __pyx_v__attributes = 0;
   __Pyx_AddTraceback("lxml.objectify.DataElement", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -26011,7 +26018,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __Pyx_INCREF(__pyx_v__xsi);
   __Pyx_INCREF(__pyx_v__attributes);
 
-  /* "src/lxml/lxml.objectify.pyx":1880
+  /* "src/lxml/lxml.objectify.pyx":1883
  *     in attrib and/or keyword arguments.
  *     """
  *     if nsmap is None:             # <<<<<<<<<<<<<<
@@ -26022,7 +26029,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1881
+    /* "src/lxml/lxml.objectify.pyx":1884
  *     """
  *     if nsmap is None:
  *         nsmap = _DEFAULT_NSMAP             # <<<<<<<<<<<<<<
@@ -26032,7 +26039,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __Pyx_INCREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
     __Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
 
-    /* "src/lxml/lxml.objectify.pyx":1880
+    /* "src/lxml/lxml.objectify.pyx":1883
  *     in attrib and/or keyword arguments.
  *     """
  *     if nsmap is None:             # <<<<<<<<<<<<<<
@@ -26041,7 +26048,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1882
+  /* "src/lxml/lxml.objectify.pyx":1885
  *     if nsmap is None:
  *         nsmap = _DEFAULT_NSMAP
  *     if attrib is not None and attrib:             # <<<<<<<<<<<<<<
@@ -26055,47 +26062,47 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L5_bool_binop_done;
   }
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_attrib); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_attrib); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = __pyx_t_3;
   __pyx_L5_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1883
+    /* "src/lxml/lxml.objectify.pyx":1886
  *         nsmap = _DEFAULT_NSMAP
  *     if attrib is not None and attrib:
  *         if _attributes:             # <<<<<<<<<<<<<<
  *             attrib = dict(attrib)
  *             attrib.update(_attributes)
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_2) {
 
-      /* "src/lxml/lxml.objectify.pyx":1884
+      /* "src/lxml/lxml.objectify.pyx":1887
  *     if attrib is not None and attrib:
  *         if _attributes:
  *             attrib = dict(attrib)             # <<<<<<<<<<<<<<
  *             attrib.update(_attributes)
  *         _attributes = attrib
  */
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1884; __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 = 1887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_v_attrib);
       __Pyx_GIVEREF(__pyx_v_attrib);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_attrib);
-      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyDict_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyDict_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF_SET(__pyx_v_attrib, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1885
+      /* "src/lxml/lxml.objectify.pyx":1888
  *         if _attributes:
  *             attrib = dict(attrib)
  *             attrib.update(_attributes)             # <<<<<<<<<<<<<<
  *         _attributes = attrib
  *     if isinstance(_value, ObjectifiedElement):
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_update); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_update); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_6 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -26108,23 +26115,23 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         }
       }
       if (!__pyx_t_6) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v__attributes); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v__attributes); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
       } else {
-        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
         __Pyx_INCREF(__pyx_v__attributes);
         __Pyx_GIVEREF(__pyx_v__attributes);
         PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v__attributes);
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1883
+      /* "src/lxml/lxml.objectify.pyx":1886
  *         nsmap = _DEFAULT_NSMAP
  *     if attrib is not None and attrib:
  *         if _attributes:             # <<<<<<<<<<<<<<
@@ -26133,7 +26140,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1886
+    /* "src/lxml/lxml.objectify.pyx":1889
  *             attrib = dict(attrib)
  *             attrib.update(_attributes)
  *         _attributes = attrib             # <<<<<<<<<<<<<<
@@ -26143,7 +26150,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __Pyx_INCREF(__pyx_v_attrib);
     __Pyx_DECREF_SET(__pyx_v__attributes, __pyx_v_attrib);
 
-    /* "src/lxml/lxml.objectify.pyx":1882
+    /* "src/lxml/lxml.objectify.pyx":1885
  *     if nsmap is None:
  *         nsmap = _DEFAULT_NSMAP
  *     if attrib is not None and attrib:             # <<<<<<<<<<<<<<
@@ -26152,7 +26159,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1887
+  /* "src/lxml/lxml.objectify.pyx":1890
  *             attrib.update(_attributes)
  *         _attributes = attrib
  *     if isinstance(_value, ObjectifiedElement):             # <<<<<<<<<<<<<<
@@ -26163,7 +26170,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/lxml.objectify.pyx":1888
+    /* "src/lxml/lxml.objectify.pyx":1891
  *         _attributes = attrib
  *     if isinstance(_value, ObjectifiedElement):
  *         if _pytype is None:             # <<<<<<<<<<<<<<
@@ -26174,7 +26181,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/lxml.objectify.pyx":1889
+      /* "src/lxml/lxml.objectify.pyx":1892
  *     if isinstance(_value, ObjectifiedElement):
  *         if _pytype is None:
  *             if _xsi is None and not _attributes and nsmap is _DEFAULT_NSMAP:             # <<<<<<<<<<<<<<
@@ -26188,7 +26195,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __pyx_t_2 = __pyx_t_1;
         goto __pyx_L11_bool_binop_done;
       }
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_3 = ((!__pyx_t_1) != 0);
       if (__pyx_t_3) {
       } else {
@@ -26201,7 +26208,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_L11_bool_binop_done:;
       if (__pyx_t_2) {
 
-        /* "src/lxml/lxml.objectify.pyx":1891
+        /* "src/lxml/lxml.objectify.pyx":1894
  *             if _xsi is None and not _attributes and nsmap is _DEFAULT_NSMAP:
  *                 # special case: no change!
  *                 return _value.__copy__()             # <<<<<<<<<<<<<<
@@ -26209,7 +26216,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         # reuse existing nsmap unless redefined in nsmap parameter
  */
         __Pyx_XDECREF(__pyx_r);
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_copy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_copy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_7 = NULL;
         if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -26222,10 +26229,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
           }
         }
         if (__pyx_t_7) {
-          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         } else {
-          __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -26233,7 +26240,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __pyx_t_5 = 0;
         goto __pyx_L0;
 
-        /* "src/lxml/lxml.objectify.pyx":1889
+        /* "src/lxml/lxml.objectify.pyx":1892
  *     if isinstance(_value, ObjectifiedElement):
  *         if _pytype is None:
  *             if _xsi is None and not _attributes and nsmap is _DEFAULT_NSMAP:             # <<<<<<<<<<<<<<
@@ -26242,7 +26249,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1888
+      /* "src/lxml/lxml.objectify.pyx":1891
  *         _attributes = attrib
  *     if isinstance(_value, ObjectifiedElement):
  *         if _pytype is None:             # <<<<<<<<<<<<<<
@@ -26251,7 +26258,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1887
+    /* "src/lxml/lxml.objectify.pyx":1890
  *             attrib.update(_attributes)
  *         _attributes = attrib
  *     if isinstance(_value, ObjectifiedElement):             # <<<<<<<<<<<<<<
@@ -26260,7 +26267,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1892
+  /* "src/lxml/lxml.objectify.pyx":1895
  *                 # special case: no change!
  *                 return _value.__copy__()
  *     if isinstance(_value, ObjectifiedDataElement):             # <<<<<<<<<<<<<<
@@ -26271,19 +26278,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/lxml.objectify.pyx":1894
+    /* "src/lxml/lxml.objectify.pyx":1897
  *     if isinstance(_value, ObjectifiedDataElement):
  *         # reuse existing nsmap unless redefined in nsmap parameter
  *         temp = _value.nsmap             # <<<<<<<<<<<<<<
  *         if temp is not None and temp:
  *             temp = dict(temp)
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_nsmap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_nsmap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_v_temp = __pyx_t_5;
     __pyx_t_5 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1895
+    /* "src/lxml/lxml.objectify.pyx":1898
  *         # reuse existing nsmap unless redefined in nsmap parameter
  *         temp = _value.nsmap
  *         if temp is not None and temp:             # <<<<<<<<<<<<<<
@@ -26297,37 +26304,37 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_t_1 = __pyx_t_3;
       goto __pyx_L16_bool_binop_done;
     }
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_temp); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_temp); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_1 = __pyx_t_3;
     __pyx_L16_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "src/lxml/lxml.objectify.pyx":1896
+      /* "src/lxml/lxml.objectify.pyx":1899
  *         temp = _value.nsmap
  *         if temp is not None and temp:
  *             temp = dict(temp)             # <<<<<<<<<<<<<<
  *             temp.update(nsmap)
  *             nsmap = temp
  */
-      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1896; __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 = 1899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_INCREF(__pyx_v_temp);
       __Pyx_GIVEREF(__pyx_v_temp);
       PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_temp);
-      __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyDict_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyDict_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF_SET(__pyx_v_temp, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1897
+      /* "src/lxml/lxml.objectify.pyx":1900
  *         if temp is not None and temp:
  *             temp = dict(temp)
  *             temp.update(nsmap)             # <<<<<<<<<<<<<<
  *             nsmap = temp
  *         # reuse existing attributes unless redefined in attrib/_attributes
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_7 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -26340,23 +26347,23 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         }
       }
       if (!__pyx_t_7) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_nsmap); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_nsmap); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
       } else {
-        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
         __Pyx_INCREF(__pyx_v_nsmap);
         __Pyx_GIVEREF(__pyx_v_nsmap);
         PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_nsmap);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       }
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1898
+      /* "src/lxml/lxml.objectify.pyx":1901
  *             temp = dict(temp)
  *             temp.update(nsmap)
  *             nsmap = temp             # <<<<<<<<<<<<<<
@@ -26366,7 +26373,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_INCREF(__pyx_v_temp);
       __Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_v_temp);
 
-      /* "src/lxml/lxml.objectify.pyx":1895
+      /* "src/lxml/lxml.objectify.pyx":1898
  *         # reuse existing nsmap unless redefined in nsmap parameter
  *         temp = _value.nsmap
  *         if temp is not None and temp:             # <<<<<<<<<<<<<<
@@ -26375,19 +26382,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1900
+    /* "src/lxml/lxml.objectify.pyx":1903
  *             nsmap = temp
  *         # reuse existing attributes unless redefined in attrib/_attributes
  *         temp = _value.attrib             # <<<<<<<<<<<<<<
  *         if temp is not None and temp:
  *             temp = dict(temp)
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_attrib); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_attrib); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_temp, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1901
+    /* "src/lxml/lxml.objectify.pyx":1904
  *         # reuse existing attributes unless redefined in attrib/_attributes
  *         temp = _value.attrib
  *         if temp is not None and temp:             # <<<<<<<<<<<<<<
@@ -26401,37 +26408,37 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_t_1 = __pyx_t_2;
       goto __pyx_L19_bool_binop_done;
     }
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_temp); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_temp); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_1 = __pyx_t_2;
     __pyx_L19_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "src/lxml/lxml.objectify.pyx":1902
+      /* "src/lxml/lxml.objectify.pyx":1905
  *         temp = _value.attrib
  *         if temp is not None and temp:
  *             temp = dict(temp)             # <<<<<<<<<<<<<<
  *             temp.update(_attributes)
  *             _attributes = temp
  */
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1902; __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 = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_v_temp);
       __Pyx_GIVEREF(__pyx_v_temp);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_temp);
-      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyDict_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyDict_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF_SET(__pyx_v_temp, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1903
+      /* "src/lxml/lxml.objectify.pyx":1906
  *         if temp is not None and temp:
  *             temp = dict(temp)
  *             temp.update(_attributes)             # <<<<<<<<<<<<<<
  *             _attributes = temp
  *         # reuse existing xsi:type or py:pytype attributes, unless provided as
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_update); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_update); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_6 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -26444,23 +26451,23 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         }
       }
       if (!__pyx_t_6) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v__attributes); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v__attributes); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
       } else {
-        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
         __Pyx_INCREF(__pyx_v__attributes);
         __Pyx_GIVEREF(__pyx_v__attributes);
         PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v__attributes);
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1904
+      /* "src/lxml/lxml.objectify.pyx":1907
  *             temp = dict(temp)
  *             temp.update(_attributes)
  *             _attributes = temp             # <<<<<<<<<<<<<<
@@ -26470,7 +26477,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_INCREF(__pyx_v_temp);
       __Pyx_DECREF_SET(__pyx_v__attributes, __pyx_v_temp);
 
-      /* "src/lxml/lxml.objectify.pyx":1901
+      /* "src/lxml/lxml.objectify.pyx":1904
  *         # reuse existing attributes unless redefined in attrib/_attributes
  *         temp = _value.attrib
  *         if temp is not None and temp:             # <<<<<<<<<<<<<<
@@ -26479,7 +26486,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1907
+    /* "src/lxml/lxml.objectify.pyx":1910
  *         # reuse existing xsi:type or py:pytype attributes, unless provided as
  *         # arguments
  *         if _xsi is None and _pytype is None:             # <<<<<<<<<<<<<<
@@ -26499,14 +26506,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __pyx_L22_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "src/lxml/lxml.objectify.pyx":1908
+      /* "src/lxml/lxml.objectify.pyx":1911
  *         # arguments
  *         if _xsi is None and _pytype is None:
  *             _xsi = _attributes.get(XML_SCHEMA_INSTANCE_TYPE_ATTR)             # <<<<<<<<<<<<<<
  *             _pytype = _attributes.get(PYTYPE_ATTRIBUTE)
  * 
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__attributes, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__attributes, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_7 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -26519,16 +26526,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         }
       }
       if (!__pyx_t_7) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
       } else {
-        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
         __Pyx_INCREF(__pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR);
         __Pyx_GIVEREF(__pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR);
         PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR);
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       }
@@ -26536,16 +26543,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_DECREF_SET(__pyx_v__xsi, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1909
+      /* "src/lxml/lxml.objectify.pyx":1912
  *         if _xsi is None and _pytype is None:
  *             _xsi = _attributes.get(XML_SCHEMA_INSTANCE_TYPE_ATTR)
  *             _pytype = _attributes.get(PYTYPE_ATTRIBUTE)             # <<<<<<<<<<<<<<
  * 
  *     if _xsi is not None:
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__attributes, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__attributes, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_7 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -26558,17 +26565,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         }
       }
       if (!__pyx_t_7) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_GOTREF(__pyx_t_5);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
         __Pyx_GIVEREF(__pyx_t_6);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6);
         __pyx_t_6 = 0;
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
@@ -26576,7 +26583,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_DECREF_SET(__pyx_v__pytype, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1907
+      /* "src/lxml/lxml.objectify.pyx":1910
  *         # reuse existing xsi:type or py:pytype attributes, unless provided as
  *         # arguments
  *         if _xsi is None and _pytype is None:             # <<<<<<<<<<<<<<
@@ -26585,7 +26592,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1892
+    /* "src/lxml/lxml.objectify.pyx":1895
  *                 # special case: no change!
  *                 return _value.__copy__()
  *     if isinstance(_value, ObjectifiedDataElement):             # <<<<<<<<<<<<<<
@@ -26594,7 +26601,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1911
+  /* "src/lxml/lxml.objectify.pyx":1914
  *             _pytype = _attributes.get(PYTYPE_ATTRIBUTE)
  * 
  *     if _xsi is not None:             # <<<<<<<<<<<<<<
@@ -26605,27 +26612,27 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1912
+    /* "src/lxml/lxml.objectify.pyx":1915
  * 
  *     if _xsi is not None:
  *         if u':' in _xsi:             # <<<<<<<<<<<<<<
  *             prefix, name = _xsi.split(u':', 1)
  *             ns = nsmap.get(prefix)
  */
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__12, __pyx_v__xsi, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__12, __pyx_v__xsi, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/lxml.objectify.pyx":1913
+      /* "src/lxml/lxml.objectify.pyx":1916
  *     if _xsi is not None:
  *         if u':' in _xsi:
  *             prefix, name = _xsi.split(u':', 1)             # <<<<<<<<<<<<<<
  *             ns = nsmap.get(prefix)
  *             if ns != XML_SCHEMA_NS:
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__xsi, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__xsi, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
@@ -26638,7 +26645,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         if (unlikely(size != 2)) {
           if (size > 2) __Pyx_RaiseTooManyValuesError(2);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         #if CYTHON_COMPILING_IN_CPYTHON
         if (likely(PyTuple_CheckExact(sequence))) {
@@ -26651,15 +26658,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __Pyx_INCREF(__pyx_t_5);
         __Pyx_INCREF(__pyx_t_8);
         #else
-        __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_8);
         #endif
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
         Py_ssize_t index = -1;
-        __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext;
@@ -26667,7 +26674,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __Pyx_GOTREF(__pyx_t_5);
         index = 1; __pyx_t_8 = __pyx_t_9(__pyx_t_6); if (unlikely(!__pyx_t_8)) goto __pyx_L26_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_8);
-        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_9 = NULL;
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         goto __pyx_L27_unpacking_done;
@@ -26675,7 +26682,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __pyx_t_9 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_L27_unpacking_done:;
       }
       __pyx_v_prefix = __pyx_t_5;
@@ -26683,14 +26690,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_v_name = __pyx_t_8;
       __pyx_t_8 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1914
+      /* "src/lxml/lxml.objectify.pyx":1917
  *         if u':' in _xsi:
  *             prefix, name = _xsi.split(u':', 1)
  *             ns = nsmap.get(prefix)             # <<<<<<<<<<<<<<
  *             if ns != XML_SCHEMA_NS:
  *                 raise ValueError, u"XSD types require the XSD namespace"
  */
-      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_get); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_get); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_5 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
@@ -26703,16 +26710,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         }
       }
       if (!__pyx_t_5) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_prefix); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_prefix); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
       } else {
-        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
         __Pyx_INCREF(__pyx_v_prefix);
         __Pyx_GIVEREF(__pyx_v_prefix);
         PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_prefix);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       }
@@ -26720,19 +26727,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_v_ns = __pyx_t_4;
       __pyx_t_4 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1915
+      /* "src/lxml/lxml.objectify.pyx":1918
  *             prefix, name = _xsi.split(u':', 1)
  *             ns = nsmap.get(prefix)
  *             if ns != XML_SCHEMA_NS:             # <<<<<<<<<<<<<<
  *                 raise ValueError, u"XSD types require the XSD namespace"
  *         elif nsmap is _DEFAULT_NSMAP:
  */
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_ns, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_ns, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_1) {
 
-        /* "src/lxml/lxml.objectify.pyx":1916
+        /* "src/lxml/lxml.objectify.pyx":1919
  *             ns = nsmap.get(prefix)
  *             if ns != XML_SCHEMA_NS:
  *                 raise ValueError, u"XSD types require the XSD namespace"             # <<<<<<<<<<<<<<
@@ -26740,9 +26747,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             name = _xsi
  */
         __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_XSD_types_require_the_XSD_namesp, 0, 0);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-        /* "src/lxml/lxml.objectify.pyx":1915
+        /* "src/lxml/lxml.objectify.pyx":1918
  *             prefix, name = _xsi.split(u':', 1)
  *             ns = nsmap.get(prefix)
  *             if ns != XML_SCHEMA_NS:             # <<<<<<<<<<<<<<
@@ -26751,7 +26758,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1912
+      /* "src/lxml/lxml.objectify.pyx":1915
  * 
  *     if _xsi is not None:
  *         if u':' in _xsi:             # <<<<<<<<<<<<<<
@@ -26761,7 +26768,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       goto __pyx_L25;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1917
+    /* "src/lxml/lxml.objectify.pyx":1920
  *             if ns != XML_SCHEMA_NS:
  *                 raise ValueError, u"XSD types require the XSD namespace"
  *         elif nsmap is _DEFAULT_NSMAP:             # <<<<<<<<<<<<<<
@@ -26772,7 +26779,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/lxml.objectify.pyx":1918
+      /* "src/lxml/lxml.objectify.pyx":1921
  *                 raise ValueError, u"XSD types require the XSD namespace"
  *         elif nsmap is _DEFAULT_NSMAP:
  *             name = _xsi             # <<<<<<<<<<<<<<
@@ -26782,19 +26789,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_INCREF(__pyx_v__xsi);
       __pyx_v_name = __pyx_v__xsi;
 
-      /* "src/lxml/lxml.objectify.pyx":1919
+      /* "src/lxml/lxml.objectify.pyx":1922
  *         elif nsmap is _DEFAULT_NSMAP:
  *             name = _xsi
  *             _xsi = u'xsd:' + _xsi             # <<<<<<<<<<<<<<
  *         else:
  *             name = _xsi
  */
-      __pyx_t_4 = PyNumber_Add(__pyx_kp_u_xsd_2, __pyx_v__xsi); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyNumber_Add(__pyx_kp_u_xsd_2, __pyx_v__xsi); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v__xsi, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1917
+      /* "src/lxml/lxml.objectify.pyx":1920
  *             if ns != XML_SCHEMA_NS:
  *                 raise ValueError, u"XSD types require the XSD namespace"
  *         elif nsmap is _DEFAULT_NSMAP:             # <<<<<<<<<<<<<<
@@ -26804,7 +26811,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       goto __pyx_L25;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1921
+    /* "src/lxml/lxml.objectify.pyx":1924
  *             _xsi = u'xsd:' + _xsi
  *         else:
  *             name = _xsi             # <<<<<<<<<<<<<<
@@ -26815,14 +26822,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_INCREF(__pyx_v__xsi);
       __pyx_v_name = __pyx_v__xsi;
 
-      /* "src/lxml/lxml.objectify.pyx":1922
+      /* "src/lxml/lxml.objectify.pyx":1925
  *         else:
  *             name = _xsi
  *             for prefix, ns in nsmap.items():             # <<<<<<<<<<<<<<
  *                 if ns == XML_SCHEMA_NS:
  *                     if prefix is not None and prefix:
  */
-      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_items); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_items); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_6 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
@@ -26835,10 +26842,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         }
       }
       if (__pyx_t_6) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       } else {
-        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -26846,9 +26853,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __pyx_t_8 = __pyx_t_4; __Pyx_INCREF(__pyx_t_8); __pyx_t_10 = 0;
         __pyx_t_11 = NULL;
       } else {
-        __pyx_t_10 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_8);
-        __pyx_t_11 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       for (;;) {
@@ -26856,17 +26863,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
           if (likely(PyList_CheckExact(__pyx_t_8))) {
             if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_8)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_10); __Pyx_INCREF(__pyx_t_4); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_10); __Pyx_INCREF(__pyx_t_4); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_4 = PySequence_ITEM(__pyx_t_8, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_4 = PySequence_ITEM(__pyx_t_8, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_4);
             #endif
           } else {
             if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_10); __Pyx_INCREF(__pyx_t_4); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_10); __Pyx_INCREF(__pyx_t_4); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_4 = PySequence_ITEM(__pyx_t_8, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_4 = PySequence_ITEM(__pyx_t_8, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_4);
             #endif
           }
@@ -26876,7 +26883,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             break;
           }
@@ -26892,7 +26899,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
           if (unlikely(size != 2)) {
             if (size > 2) __Pyx_RaiseTooManyValuesError(2);
             else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           #if CYTHON_COMPILING_IN_CPYTHON
           if (likely(PyTuple_CheckExact(sequence))) {
@@ -26905,15 +26912,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
           __Pyx_INCREF(__pyx_t_6);
           __Pyx_INCREF(__pyx_t_5);
           #else
-          __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_5);
           #endif
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         } else {
           Py_ssize_t index = -1;
-          __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
           __pyx_t_9 = Py_TYPE(__pyx_t_7)->tp_iternext;
@@ -26921,7 +26928,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
           __Pyx_GOTREF(__pyx_t_6);
           index = 1; __pyx_t_5 = __pyx_t_9(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L31_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_5);
-          if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_t_9 = NULL;
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           goto __pyx_L32_unpacking_done;
@@ -26929,7 +26936,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           __pyx_t_9 = NULL;
           if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_L32_unpacking_done:;
         }
         __Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_6);
@@ -26937,19 +26944,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __Pyx_XDECREF_SET(__pyx_v_ns, __pyx_t_5);
         __pyx_t_5 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1923
+        /* "src/lxml/lxml.objectify.pyx":1926
  *             name = _xsi
  *             for prefix, ns in nsmap.items():
  *                 if ns == XML_SCHEMA_NS:             # <<<<<<<<<<<<<<
  *                     if prefix is not None and prefix:
  *                         _xsi = prefix + u':' + _xsi
  */
-        __pyx_t_4 = PyObject_RichCompare(__pyx_v_ns, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyObject_RichCompare(__pyx_v_ns, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         if (__pyx_t_2) {
 
-          /* "src/lxml/lxml.objectify.pyx":1924
+          /* "src/lxml/lxml.objectify.pyx":1927
  *             for prefix, ns in nsmap.items():
  *                 if ns == XML_SCHEMA_NS:
  *                     if prefix is not None and prefix:             # <<<<<<<<<<<<<<
@@ -26963,27 +26970,27 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
             __pyx_t_2 = __pyx_t_3;
             goto __pyx_L35_bool_binop_done;
           }
-          __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_prefix); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_prefix); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_t_2 = __pyx_t_3;
           __pyx_L35_bool_binop_done:;
           if (__pyx_t_2) {
 
-            /* "src/lxml/lxml.objectify.pyx":1925
+            /* "src/lxml/lxml.objectify.pyx":1928
  *                 if ns == XML_SCHEMA_NS:
  *                     if prefix is not None and prefix:
  *                         _xsi = prefix + u':' + _xsi             # <<<<<<<<<<<<<<
  *                     break
  *             else:
  */
-            __pyx_t_4 = PyNumber_Add(__pyx_v_prefix, __pyx_kp_u__12); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_4 = PyNumber_Add(__pyx_v_prefix, __pyx_kp_u__12); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_4);
-            __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_v__xsi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_v__xsi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_5);
             __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
             __Pyx_DECREF_SET(__pyx_v__xsi, __pyx_t_5);
             __pyx_t_5 = 0;
 
-            /* "src/lxml/lxml.objectify.pyx":1924
+            /* "src/lxml/lxml.objectify.pyx":1927
  *             for prefix, ns in nsmap.items():
  *                 if ns == XML_SCHEMA_NS:
  *                     if prefix is not None and prefix:             # <<<<<<<<<<<<<<
@@ -26992,7 +26999,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
           }
 
-          /* "src/lxml/lxml.objectify.pyx":1926
+          /* "src/lxml/lxml.objectify.pyx":1929
  *                     if prefix is not None and prefix:
  *                         _xsi = prefix + u':' + _xsi
  *                     break             # <<<<<<<<<<<<<<
@@ -27001,7 +27008,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
           goto __pyx_L30_break;
 
-          /* "src/lxml/lxml.objectify.pyx":1923
+          /* "src/lxml/lxml.objectify.pyx":1926
  *             name = _xsi
  *             for prefix, ns in nsmap.items():
  *                 if ns == XML_SCHEMA_NS:             # <<<<<<<<<<<<<<
@@ -27010,7 +27017,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
         }
 
-        /* "src/lxml/lxml.objectify.pyx":1922
+        /* "src/lxml/lxml.objectify.pyx":1925
  *         else:
  *             name = _xsi
  *             for prefix, ns in nsmap.items():             # <<<<<<<<<<<<<<
@@ -27020,7 +27027,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       }
       /*else*/ {
 
-        /* "src/lxml/lxml.objectify.pyx":1928
+        /* "src/lxml/lxml.objectify.pyx":1931
  *                     break
  *             else:
  *                 raise ValueError, u"XSD types require the XSD namespace"             # <<<<<<<<<<<<<<
@@ -27028,10 +27035,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         if _pytype is None:
  */
         __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_XSD_types_require_the_XSD_namesp, 0, 0);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1922
+      /* "src/lxml/lxml.objectify.pyx":1925
  *         else:
  *             name = _xsi
  *             for prefix, ns in nsmap.items():             # <<<<<<<<<<<<<<
@@ -27043,16 +27050,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     }
     __pyx_L25:;
 
-    /* "src/lxml/lxml.objectify.pyx":1929
+    /* "src/lxml/lxml.objectify.pyx":1932
  *             else:
  *                 raise ValueError, u"XSD types require the XSD namespace"
  *         _attributes[XML_SCHEMA_INSTANCE_TYPE_ATTR] = _xsi             # <<<<<<<<<<<<<<
  *         if _pytype is None:
  *             # allow using unregistered or even wrong xsi:type names
  */
-    if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR, __pyx_v__xsi) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR, __pyx_v__xsi) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "src/lxml/lxml.objectify.pyx":1930
+    /* "src/lxml/lxml.objectify.pyx":1933
  *                 raise ValueError, u"XSD types require the XSD namespace"
  *         _attributes[XML_SCHEMA_INSTANCE_TYPE_ATTR] = _xsi
  *         if _pytype is None:             # <<<<<<<<<<<<<<
@@ -27063,7 +27070,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/lxml.objectify.pyx":1932
+      /* "src/lxml/lxml.objectify.pyx":1935
  *         if _pytype is None:
  *             # allow using unregistered or even wrong xsi:type names
  *             py_type = <PyType>_SCHEMA_TYPE_DICT.get(_xsi)             # <<<<<<<<<<<<<<
@@ -27072,9 +27079,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
       if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_t_8 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v__xsi, Py_None); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v__xsi, Py_None); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_5 = __pyx_t_8;
       __Pyx_INCREF(__pyx_t_5);
@@ -27082,7 +27089,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_v_py_type = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1933
+      /* "src/lxml/lxml.objectify.pyx":1936
  *             # allow using unregistered or even wrong xsi:type names
  *             py_type = <PyType>_SCHEMA_TYPE_DICT.get(_xsi)
  *             if py_type is None:             # <<<<<<<<<<<<<<
@@ -27093,7 +27100,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_t_2 = (__pyx_t_3 != 0);
       if (__pyx_t_2) {
 
-        /* "src/lxml/lxml.objectify.pyx":1934
+        /* "src/lxml/lxml.objectify.pyx":1937
  *             py_type = <PyType>_SCHEMA_TYPE_DICT.get(_xsi)
  *             if py_type is None:
  *                 py_type = <PyType>_SCHEMA_TYPE_DICT.get(name)             # <<<<<<<<<<<<<<
@@ -27102,9 +27109,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
         if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
-        __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_name, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_name, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_t_8 = __pyx_t_5;
         __Pyx_INCREF(__pyx_t_8);
@@ -27112,7 +27119,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __Pyx_DECREF_SET(__pyx_v_py_type, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_8));
         __pyx_t_8 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1933
+        /* "src/lxml/lxml.objectify.pyx":1936
  *             # allow using unregistered or even wrong xsi:type names
  *             py_type = <PyType>_SCHEMA_TYPE_DICT.get(_xsi)
  *             if py_type is None:             # <<<<<<<<<<<<<<
@@ -27121,7 +27128,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1935
+      /* "src/lxml/lxml.objectify.pyx":1938
  *             if py_type is None:
  *                 py_type = <PyType>_SCHEMA_TYPE_DICT.get(name)
  *             if py_type is not None:             # <<<<<<<<<<<<<<
@@ -27132,7 +27139,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_t_3 = (__pyx_t_2 != 0);
       if (__pyx_t_3) {
 
-        /* "src/lxml/lxml.objectify.pyx":1936
+        /* "src/lxml/lxml.objectify.pyx":1939
  *                 py_type = <PyType>_SCHEMA_TYPE_DICT.get(name)
  *             if py_type is not None:
  *                 _pytype = py_type.name             # <<<<<<<<<<<<<<
@@ -27144,7 +27151,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __Pyx_DECREF_SET(__pyx_v__pytype, __pyx_t_8);
         __pyx_t_8 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1935
+        /* "src/lxml/lxml.objectify.pyx":1938
  *             if py_type is None:
  *                 py_type = <PyType>_SCHEMA_TYPE_DICT.get(name)
  *             if py_type is not None:             # <<<<<<<<<<<<<<
@@ -27153,7 +27160,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
       }
 
-      /* "src/lxml/lxml.objectify.pyx":1930
+      /* "src/lxml/lxml.objectify.pyx":1933
  *                 raise ValueError, u"XSD types require the XSD namespace"
  *         _attributes[XML_SCHEMA_INSTANCE_TYPE_ATTR] = _xsi
  *         if _pytype is None:             # <<<<<<<<<<<<<<
@@ -27162,7 +27169,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1911
+    /* "src/lxml/lxml.objectify.pyx":1914
  *             _pytype = _attributes.get(PYTYPE_ATTRIBUTE)
  * 
  *     if _xsi is not None:             # <<<<<<<<<<<<<<
@@ -27171,7 +27178,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1938
+  /* "src/lxml/lxml.objectify.pyx":1941
  *                 _pytype = py_type.name
  * 
  *     if _pytype is None:             # <<<<<<<<<<<<<<
@@ -27182,19 +27189,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1939
+    /* "src/lxml/lxml.objectify.pyx":1942
  * 
  *     if _pytype is None:
  *         _pytype = _pytypename(_value)             # <<<<<<<<<<<<<<
  * 
  *     if _value is None and _pytype != u"str":
  */
-    __pyx_t_8 = __pyx_f_4lxml_9objectify__pytypename(__pyx_v__value); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __pyx_f_4lxml_9objectify__pytypename(__pyx_v__value); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF_SET(__pyx_v__pytype, __pyx_t_8);
     __pyx_t_8 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1938
+    /* "src/lxml/lxml.objectify.pyx":1941
  *                 _pytype = py_type.name
  * 
  *     if _pytype is None:             # <<<<<<<<<<<<<<
@@ -27203,7 +27210,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1941
+  /* "src/lxml/lxml.objectify.pyx":1944
  *         _pytype = _pytypename(_value)
  * 
  *     if _value is None and _pytype != u"str":             # <<<<<<<<<<<<<<
@@ -27217,19 +27224,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __pyx_t_2 = __pyx_t_1;
     goto __pyx_L43_bool_binop_done;
   }
-  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_str, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_str, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = __pyx_t_1;
   __pyx_L43_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1942
+    /* "src/lxml/lxml.objectify.pyx":1945
  * 
  *     if _value is None and _pytype != u"str":
  *         _pytype = _pytype or u"NoneType"             # <<<<<<<<<<<<<<
  *         strval = None
  *     elif python._isString(_value):
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__pytype); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__pytype); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (!__pyx_t_2) {
     } else {
       __Pyx_INCREF(__pyx_v__pytype);
@@ -27242,7 +27249,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __Pyx_DECREF_SET(__pyx_v__pytype, __pyx_t_8);
     __pyx_t_8 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1943
+    /* "src/lxml/lxml.objectify.pyx":1946
  *     if _value is None and _pytype != u"str":
  *         _pytype = _pytype or u"NoneType"
  *         strval = None             # <<<<<<<<<<<<<<
@@ -27252,7 +27259,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __Pyx_INCREF(Py_None);
     __pyx_v_strval = Py_None;
 
-    /* "src/lxml/lxml.objectify.pyx":1941
+    /* "src/lxml/lxml.objectify.pyx":1944
  *         _pytype = _pytypename(_value)
  * 
  *     if _value is None and _pytype != u"str":             # <<<<<<<<<<<<<<
@@ -27262,7 +27269,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     goto __pyx_L42;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1944
+  /* "src/lxml/lxml.objectify.pyx":1947
  *         _pytype = _pytype or u"NoneType"
  *         strval = None
  *     elif python._isString(_value):             # <<<<<<<<<<<<<<
@@ -27272,7 +27279,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __pyx_t_2 = (_isString(__pyx_v__value) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1945
+    /* "src/lxml/lxml.objectify.pyx":1948
  *         strval = None
  *     elif python._isString(_value):
  *         strval = _value             # <<<<<<<<<<<<<<
@@ -27282,7 +27289,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __Pyx_INCREF(__pyx_v__value);
     __pyx_v_strval = __pyx_v__value;
 
-    /* "src/lxml/lxml.objectify.pyx":1944
+    /* "src/lxml/lxml.objectify.pyx":1947
  *         _pytype = _pytype or u"NoneType"
  *         strval = None
  *     elif python._isString(_value):             # <<<<<<<<<<<<<<
@@ -27292,7 +27299,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     goto __pyx_L42;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1946
+  /* "src/lxml/lxml.objectify.pyx":1949
  *     elif python._isString(_value):
  *         strval = _value
  *     elif isinstance(_value, bool):             # <<<<<<<<<<<<<<
@@ -27301,22 +27308,22 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   __pyx_t_8 = ((PyObject*)&PyBool_Type);
   __Pyx_INCREF(__pyx_t_8);
-  __pyx_t_2 = PyObject_IsInstance(__pyx_v__value, __pyx_t_8); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_IsInstance(__pyx_v__value, __pyx_t_8); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/lxml.objectify.pyx":1947
+    /* "src/lxml/lxml.objectify.pyx":1950
  *         strval = _value
  *     elif isinstance(_value, bool):
  *         if _value:             # <<<<<<<<<<<<<<
  *             strval = u"true"
  *         else:
  */
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v__value); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v__value); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_1) {
 
-      /* "src/lxml/lxml.objectify.pyx":1948
+      /* "src/lxml/lxml.objectify.pyx":1951
  *     elif isinstance(_value, bool):
  *         if _value:
  *             strval = u"true"             # <<<<<<<<<<<<<<
@@ -27326,7 +27333,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_INCREF(__pyx_n_u_true);
       __pyx_v_strval = __pyx_n_u_true;
 
-      /* "src/lxml/lxml.objectify.pyx":1947
+      /* "src/lxml/lxml.objectify.pyx":1950
  *         strval = _value
  *     elif isinstance(_value, bool):
  *         if _value:             # <<<<<<<<<<<<<<
@@ -27336,7 +27343,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       goto __pyx_L47;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1950
+    /* "src/lxml/lxml.objectify.pyx":1953
  *             strval = u"true"
  *         else:
  *             strval = u"false"             # <<<<<<<<<<<<<<
@@ -27349,7 +27356,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     }
     __pyx_L47:;
 
-    /* "src/lxml/lxml.objectify.pyx":1946
+    /* "src/lxml/lxml.objectify.pyx":1949
  *     elif python._isString(_value):
  *         strval = _value
  *     elif isinstance(_value, bool):             # <<<<<<<<<<<<<<
@@ -27359,7 +27366,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     goto __pyx_L42;
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1952
+  /* "src/lxml/lxml.objectify.pyx":1955
  *             strval = u"false"
  *     else:
  *         py_type = <PyType>_PYTYPE_DICT.get(_pytype)             # <<<<<<<<<<<<<<
@@ -27369,9 +27376,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   /*else*/ {
     if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
-    __pyx_t_8 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v__pytype, Py_None); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v__pytype, Py_None); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_5 = __pyx_t_8;
     __Pyx_INCREF(__pyx_t_5);
@@ -27379,7 +27386,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __Pyx_XDECREF_SET(__pyx_v_py_type, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_5));
     __pyx_t_5 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1953
+    /* "src/lxml/lxml.objectify.pyx":1956
  *     else:
  *         py_type = <PyType>_PYTYPE_DICT.get(_pytype)
  *         stringify = unicode if py_type is None else py_type.stringify             # <<<<<<<<<<<<<<
@@ -27397,7 +27404,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __pyx_v_stringify = __pyx_t_5;
     __pyx_t_5 = 0;
 
-    /* "src/lxml/lxml.objectify.pyx":1954
+    /* "src/lxml/lxml.objectify.pyx":1957
  *         py_type = <PyType>_PYTYPE_DICT.get(_pytype)
  *         stringify = unicode if py_type is None else py_type.stringify
  *         strval = stringify(_value)             # <<<<<<<<<<<<<<
@@ -27416,16 +27423,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       }
     }
     if (!__pyx_t_4) {
-      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v__value); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v__value); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
       __Pyx_INCREF(__pyx_v__value);
       __Pyx_GIVEREF(__pyx_v__value);
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v__value);
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -27435,7 +27442,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   }
   __pyx_L42:;
 
-  /* "src/lxml/lxml.objectify.pyx":1956
+  /* "src/lxml/lxml.objectify.pyx":1959
  *         strval = stringify(_value)
  * 
  *     if _pytype is not None:             # <<<<<<<<<<<<<<
@@ -27446,25 +27453,25 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/lxml.objectify.pyx":1957
+    /* "src/lxml/lxml.objectify.pyx":1960
  * 
  *     if _pytype is not None:
  *         if _pytype == u"NoneType" or _pytype == u"none":             # <<<<<<<<<<<<<<
  *             strval = None
  *             _attributes[XML_SCHEMA_INSTANCE_NIL_ATTR] = u"true"
  */
-    __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_NoneType, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_NoneType, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (!__pyx_t_1) {
     } else {
       __pyx_t_2 = __pyx_t_1;
       goto __pyx_L50_bool_binop_done;
     }
-    __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_none, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_none, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_2 = __pyx_t_1;
     __pyx_L50_bool_binop_done:;
     if (__pyx_t_2) {
 
-      /* "src/lxml/lxml.objectify.pyx":1958
+      /* "src/lxml/lxml.objectify.pyx":1961
  *     if _pytype is not None:
  *         if _pytype == u"NoneType" or _pytype == u"none":
  *             strval = None             # <<<<<<<<<<<<<<
@@ -27474,16 +27481,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_INCREF(Py_None);
       __Pyx_DECREF_SET(__pyx_v_strval, Py_None);
 
-      /* "src/lxml/lxml.objectify.pyx":1959
+      /* "src/lxml/lxml.objectify.pyx":1962
  *         if _pytype == u"NoneType" or _pytype == u"none":
  *             strval = None
  *             _attributes[XML_SCHEMA_INSTANCE_NIL_ATTR] = u"true"             # <<<<<<<<<<<<<<
  *         else:
  *             # check if type information from arguments is valid
  */
-      if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NIL_ATTR, __pyx_n_u_true) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NIL_ATTR, __pyx_n_u_true) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "src/lxml/lxml.objectify.pyx":1957
+      /* "src/lxml/lxml.objectify.pyx":1960
  * 
  *     if _pytype is not None:
  *         if _pytype == u"NoneType" or _pytype == u"none":             # <<<<<<<<<<<<<<
@@ -27493,7 +27500,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       goto __pyx_L49;
     }
 
-    /* "src/lxml/lxml.objectify.pyx":1962
+    /* "src/lxml/lxml.objectify.pyx":1965
  *         else:
  *             # check if type information from arguments is valid
  *             py_type = <PyType>_PYTYPE_DICT.get(_pytype)             # <<<<<<<<<<<<<<
@@ -27503,9 +27510,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     /*else*/ {
       if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v__pytype, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v__pytype, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_8 = __pyx_t_5;
       __Pyx_INCREF(__pyx_t_8);
@@ -27513,7 +27520,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_XDECREF_SET(__pyx_v_py_type, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_8));
       __pyx_t_8 = 0;
 
-      /* "src/lxml/lxml.objectify.pyx":1963
+      /* "src/lxml/lxml.objectify.pyx":1966
  *             # check if type information from arguments is valid
  *             py_type = <PyType>_PYTYPE_DICT.get(_pytype)
  *             if py_type is not None:             # <<<<<<<<<<<<<<
@@ -27524,7 +27531,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/lxml.objectify.pyx":1964
+        /* "src/lxml/lxml.objectify.pyx":1967
  *             py_type = <PyType>_PYTYPE_DICT.get(_pytype)
  *             if py_type is not None:
  *                 if py_type.type_check is not None:             # <<<<<<<<<<<<<<
@@ -27535,7 +27542,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __pyx_t_2 = (__pyx_t_1 != 0);
         if (__pyx_t_2) {
 
-          /* "src/lxml/lxml.objectify.pyx":1965
+          /* "src/lxml/lxml.objectify.pyx":1968
  *             if py_type is not None:
  *                 if py_type.type_check is not None:
  *                     py_type.type_check(strval)             # <<<<<<<<<<<<<<
@@ -27554,23 +27561,23 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
             }
           }
           if (!__pyx_t_6) {
-            __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_strval); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_strval); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_8);
           } else {
-            __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_4);
             __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
             __Pyx_INCREF(__pyx_v_strval);
             __Pyx_GIVEREF(__pyx_v_strval);
             PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_strval);
-            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_8);
             __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
           }
           __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-          /* "src/lxml/lxml.objectify.pyx":1964
+          /* "src/lxml/lxml.objectify.pyx":1967
  *             py_type = <PyType>_PYTYPE_DICT.get(_pytype)
  *             if py_type is not None:
  *                 if py_type.type_check is not None:             # <<<<<<<<<<<<<<
@@ -27579,19 +27586,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
         }
 
-        /* "src/lxml/lxml.objectify.pyx":1966
+        /* "src/lxml/lxml.objectify.pyx":1969
  *                 if py_type.type_check is not None:
  *                     py_type.type_check(strval)
  *                 _attributes[PYTYPE_ATTRIBUTE] = _pytype             # <<<<<<<<<<<<<<
  * 
  *     return _makeElement(u"value", strval, _attributes, nsmap)
  */
-        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_8);
-        if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_t_8, __pyx_v__pytype) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_t_8, __pyx_v__pytype) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-        /* "src/lxml/lxml.objectify.pyx":1963
+        /* "src/lxml/lxml.objectify.pyx":1966
  *             # check if type information from arguments is valid
  *             py_type = <PyType>_PYTYPE_DICT.get(_pytype)
  *             if py_type is not None:             # <<<<<<<<<<<<<<
@@ -27602,7 +27609,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     }
     __pyx_L49:;
 
-    /* "src/lxml/lxml.objectify.pyx":1956
+    /* "src/lxml/lxml.objectify.pyx":1959
  *         strval = stringify(_value)
  * 
  *     if _pytype is not None:             # <<<<<<<<<<<<<<
@@ -27611,7 +27618,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   }
 
-  /* "src/lxml/lxml.objectify.pyx":1968
+  /* "src/lxml/lxml.objectify.pyx":1971
  *                 _attributes[PYTYPE_ATTRIBUTE] = _pytype
  * 
  *     return _makeElement(u"value", strval, _attributes, nsmap)             # <<<<<<<<<<<<<<
@@ -27619,13 +27626,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  * 
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_8 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_n_u_value, __pyx_v_strval, __pyx_v__attributes, __pyx_v_nsmap)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_n_u_value, __pyx_v_strval, __pyx_v__attributes, __pyx_v_nsmap)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   __pyx_r = __pyx_t_8;
   __pyx_t_8 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/lxml.objectify.pyx":1865
+  /* "src/lxml/lxml.objectify.pyx":1868
  *     return _makeElement(_tag, None, _attributes, nsmap)
  * 
  * def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None,             # <<<<<<<<<<<<<<
@@ -28872,7 +28879,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *         if match is None:
  */
   while (1) {
-    __pyx_t_3 = (__pyx_v_path != Py_None) && (PyUnicode_GET_SIZE(__pyx_v_path) != 0);
+    __pyx_t_3 = (__pyx_v_path != Py_None) && (__Pyx_PyUnicode_GET_LENGTH(__pyx_v_path) != 0);
     if (!__pyx_t_3) break;
 
     /* "src/lxml/objectpath.pxi":108
@@ -33106,7 +33113,7 @@ static PyTypeObject __pyx_type_4lxml_9objectify_PyType = {
   0, /*tp_setattro*/
   0, /*tp_as_buffer*/
   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  "PyType(self, name, type_check, type_class, stringify=None)\n    User defined type.\n\n    Named type that contains a type check function and a type class that\n    inherits from ObjectifiedDataElement.  The type check must take a string\n    as argument and raise ValueError or TypeError if it cannot handle the\n    string value.  It may be None in which case it is not considered for type\n    guessing.\n\n    Example::\n\n        PyType('int', int, MyIntClass).register()\n\n    Note that the order in which types are registered matters.  The first\n    matching type will be used.\n    ", /*tp_doc*/
+  "PyType(self, name, type_check, type_class, stringify=None)\n    User defined type.\n\n    Named type that contains a type check function, a type class that\n    inherits from ObjectifiedDataElement and an optional \"stringification\"\n    function.  The type check must take a string as argument and raise\n    ValueError or TypeError if it cannot handle the string value.  It may be\n    None in which case it is not considered for type guessing.  For registered\n    named types, the 'stringify' function (or unicode() if None) is used to\n    convert a Python object with type name 'name' to the string representation\n    stored in the XML tree.\n\n    Example::\n\n        PyType('int', int, MyIntClass).register()\n\n    Note that the order in which types are registered matters.  The first\n    matching type will be used.\n    ", /*tp_doc*/
   __pyx_tp_traverse_4lxml_9objectify_PyType, /*tp_traverse*/
   __pyx_tp_clear_4lxml_9objectify_PyType, /*tp_clear*/
   0, /*tp_richcompare*/
@@ -33853,6 +33860,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_remove, __pyx_k_remove, sizeof(__pyx_k_remove), 0, 0, 1, 1},
   {&__pyx_n_s_remove_blank_text, __pyx_k_remove_blank_text, sizeof(__pyx_k_remove_blank_text), 0, 0, 1, 1},
   {&__pyx_n_s_replace, __pyx_k_replace, sizeof(__pyx_k_replace), 0, 0, 1, 1},
+  {&__pyx_n_s_repr, __pyx_k_repr, sizeof(__pyx_k_repr), 0, 0, 1, 1},
   {&__pyx_n_s_root, __pyx_k_root, sizeof(__pyx_k_root), 0, 0, 1, 1},
   {&__pyx_kp_u_root_element_does_not_match_need, __pyx_k_root_element_does_not_match_need, sizeof(__pyx_k_root_element_does_not_match_need), 0, 1, 0, 0},
   {&__pyx_kp_u_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 1, 0, 0},
@@ -33924,8 +33932,8 @@ static int __Pyx_InitCachedBuiltins(void) {
   __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_oct = __Pyx_GetBuiltinName(__pyx_n_s_oct); if (!__pyx_builtin_oct) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_hex = __Pyx_GetBuiltinName(__pyx_n_s_hex); if (!__pyx_builtin_hex) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_map = __Pyx_GetBuiltinName(__pyx_n_s_map); if (!__pyx_builtin_map) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_map = __Pyx_GetBuiltinName(__pyx_n_s_map); if (!__pyx_builtin_map) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   return 0;
   __pyx_L1_error:;
@@ -33958,102 +33966,102 @@ static int __Pyx_InitCachedConstants(void) {
   __Pyx_GOTREF(__pyx_slice__4);
   __Pyx_GIVEREF(__pyx_slice__4);
 
-  /* "src/lxml/lxml.objectify.pyx":1024
+  /* "src/lxml/lxml.objectify.pyx":1027
  * cdef _registerPyTypes():
  *     pytype = PyType(u'int', int, IntElement)
  *     pytype.xmlSchemaTypes = (u"integer", u"int", u"short", u"byte", u"unsignedShort",             # <<<<<<<<<<<<<<
  *                              u"unsignedByte", u"nonPositiveInteger",
  *                              u"negativeInteger", u"long", u"nonNegativeInteger",
  */
-  __pyx_tuple__5 = PyTuple_Pack(13, __pyx_n_u_integer, __pyx_n_u_int, __pyx_n_u_short, __pyx_n_u_byte, __pyx_n_u_unsignedShort, __pyx_n_u_unsignedByte, __pyx_n_u_nonPositiveInteger, __pyx_n_u_negativeInteger, __pyx_n_u_long, __pyx_n_u_nonNegativeInteger, __pyx_n_u_unsignedLong, __pyx_n_u_unsignedInt, __pyx_n_u_positiveInteger); if (unlikely(!__pyx_tuple__5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__5 = PyTuple_Pack(13, __pyx_n_u_integer, __pyx_n_u_int, __pyx_n_u_short, __pyx_n_u_byte, __pyx_n_u_unsignedShort, __pyx_n_u_unsignedByte, __pyx_n_u_nonPositiveInteger, __pyx_n_u_negativeInteger, __pyx_n_u_long, __pyx_n_u_nonNegativeInteger, __pyx_n_u_unsignedLong, __pyx_n_u_unsignedInt, __pyx_n_u_positiveInteger); if (unlikely(!__pyx_tuple__5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__5);
   __Pyx_GIVEREF(__pyx_tuple__5);
 
-  /* "src/lxml/lxml.objectify.pyx":1035
+  /* "src/lxml/lxml.objectify.pyx":1038
  * 
- *     pytype = PyType(u'float', float, FloatElement)
+ *     pytype = PyType(u'float', float, FloatElement, repr)
  *     pytype.xmlSchemaTypes = (u"double", u"float")             # <<<<<<<<<<<<<<
  *     pytype.register()
  * 
  */
-  __pyx_tuple__6 = PyTuple_Pack(2, __pyx_n_u_double, __pyx_n_u_float); if (unlikely(!__pyx_tuple__6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__6 = PyTuple_Pack(2, __pyx_n_u_double, __pyx_n_u_float); if (unlikely(!__pyx_tuple__6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__6);
   __Pyx_GIVEREF(__pyx_tuple__6);
 
-  /* "src/lxml/lxml.objectify.pyx":1039
+  /* "src/lxml/lxml.objectify.pyx":1042
  * 
  *     pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)
  *     pytype.xmlSchemaTypes = (u"boolean",)             # <<<<<<<<<<<<<<
  *     pytype.register()
  * 
  */
-  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_n_u_boolean); if (unlikely(!__pyx_tuple__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_n_u_boolean); if (unlikely(!__pyx_tuple__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__7);
   __Pyx_GIVEREF(__pyx_tuple__7);
 
-  /* "src/lxml/lxml.objectify.pyx":1043
+  /* "src/lxml/lxml.objectify.pyx":1046
  * 
  *     pytype = PyType(u'str', None, StringElement)
  *     pytype.xmlSchemaTypes = (u"string", u"normalizedString", u"token", u"language",             # <<<<<<<<<<<<<<
  *                              u"Name", u"NCName", u"ID", u"IDREF", u"ENTITY",
  *                              u"NMTOKEN", )
  */
-  __pyx_tuple__8 = PyTuple_Pack(10, __pyx_n_u_string, __pyx_n_u_normalizedString, __pyx_n_u_token, __pyx_n_u_language, __pyx_n_u_Name, __pyx_n_u_NCName, __pyx_n_u_ID, __pyx_n_u_IDREF, __pyx_n_u_ENTITY, __pyx_n_u_NMTOKEN); if (unlikely(!__pyx_tuple__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__8 = PyTuple_Pack(10, __pyx_n_u_string, __pyx_n_u_normalizedString, __pyx_n_u_token, __pyx_n_u_language, __pyx_n_u_Name, __pyx_n_u_NCName, __pyx_n_u_ID, __pyx_n_u_IDREF, __pyx_n_u_ENTITY, __pyx_n_u_NMTOKEN); if (unlikely(!__pyx_tuple__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__8);
   __Pyx_GIVEREF(__pyx_tuple__8);
 
-  /* "src/lxml/lxml.objectify.pyx":1342
+  /* "src/lxml/lxml.objectify.pyx":1345
  *         result += _dump(child, indent)
  *     if indent == 1:
  *         return result[:-1] # strip last '\n'             # <<<<<<<<<<<<<<
  *     else:
  *         return result
  */
-  __pyx_slice__11 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__11 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__11);
   __Pyx_GIVEREF(__pyx_slice__11);
 
-  /* "src/lxml/lxml.objectify.pyx":1423
+  /* "src/lxml/lxml.objectify.pyx":1426
  *         schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is None and u':' in value:
  *             prefix, value = value.split(u':', 1)             # <<<<<<<<<<<<<<
  *             schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is not None:
  */
-  __pyx_tuple__13 = PyTuple_Pack(2, __pyx_kp_u__12, __pyx_int_1); if (unlikely(!__pyx_tuple__13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__13 = PyTuple_Pack(2, __pyx_kp_u__12, __pyx_int_1); if (unlikely(!__pyx_tuple__13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__13);
   __Pyx_GIVEREF(__pyx_tuple__13);
 
-  /* "src/lxml/lxml.objectify.pyx":1600
+  /* "src/lxml/lxml.objectify.pyx":1603
  *             pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is None and u':' in typename:
  *                 prefix, typename = typename.split(u':', 1)             # <<<<<<<<<<<<<<
  *                 pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is not None and pytype is not StrType:
  */
-  __pyx_tuple__14 = PyTuple_Pack(2, __pyx_kp_u__12, __pyx_int_1); if (unlikely(!__pyx_tuple__14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__14 = PyTuple_Pack(2, __pyx_kp_u__12, __pyx_int_1); if (unlikely(!__pyx_tuple__14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__14);
   __Pyx_GIVEREF(__pyx_tuple__14);
 
-  /* "src/lxml/lxml.objectify.pyx":1669
+  /* "src/lxml/lxml.objectify.pyx":1672
  *             if c_ns is not NULL:
  *                 if b':' in typename_utf8:
  *                     prefix, name = typename_utf8.split(b':', 1)             # <<<<<<<<<<<<<<
  *                     if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
  *                         typename_utf8 = name
  */
-  __pyx_tuple__15 = PyTuple_Pack(2, __pyx_kp_b__12, __pyx_int_1); if (unlikely(!__pyx_tuple__15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__15 = PyTuple_Pack(2, __pyx_kp_b__12, __pyx_int_1); if (unlikely(!__pyx_tuple__15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__15);
   __Pyx_GIVEREF(__pyx_tuple__15);
 
-  /* "src/lxml/lxml.objectify.pyx":1913
+  /* "src/lxml/lxml.objectify.pyx":1916
  *     if _xsi is not None:
  *         if u':' in _xsi:
  *             prefix, name = _xsi.split(u':', 1)             # <<<<<<<<<<<<<<
  *             ns = nsmap.get(prefix)
  *             if ns != XML_SCHEMA_NS:
  */
-  __pyx_tuple__16 = PyTuple_Pack(2, __pyx_kp_u__12, __pyx_int_1); if (unlikely(!__pyx_tuple__16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__16 = PyTuple_Pack(2, __pyx_kp_u__12, __pyx_int_1); if (unlikely(!__pyx_tuple__16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__16);
   __Pyx_GIVEREF(__pyx_tuple__16);
 
@@ -34095,240 +34103,240 @@ static int __Pyx_InitCachedConstants(void) {
   __Pyx_GIVEREF(__pyx_tuple__23);
   __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_checkBool, 837, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1009
+  /* "src/lxml/lxml.objectify.pyx":1012
  * cdef list _TYPE_CHECKS = []
  * 
  * def __lower_bool(b):             # <<<<<<<<<<<<<<
  *     return u"true" if b else u"false"
  * 
  */
-  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_s_b); if (unlikely(!__pyx_tuple__25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_s_b); if (unlikely(!__pyx_tuple__25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__25);
   __Pyx_GIVEREF(__pyx_tuple__25);
-  __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_lower_bool, 1009, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_lower_bool, 1012, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1015
+  /* "src/lxml/lxml.objectify.pyx":1018
  *     return u"str" if python._isString(obj) else _typename(obj)
  * 
  * def pytypename(obj):             # <<<<<<<<<<<<<<
  *     u"""pytypename(obj)
  * 
  */
-  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__27);
   __Pyx_GIVEREF(__pyx_tuple__27);
-  __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_pytypename, 1015, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_pytypename, 1018, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1061
+  /* "src/lxml/lxml.objectify.pyx":1064
  * _registerPyTypes()
  * 
  * def getRegisteredTypes():             # <<<<<<<<<<<<<<
  *     u"""getRegisteredTypes()
  * 
  */
-  __pyx_tuple__29 = PyTuple_Pack(5, __pyx_n_s_types, __pyx_n_s_known, __pyx_n_s_check, __pyx_n_s_pytype, __pyx_n_s_name); if (unlikely(!__pyx_tuple__29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__29 = PyTuple_Pack(5, __pyx_n_s_types, __pyx_n_s_known, __pyx_n_s_check, __pyx_n_s_pytype, __pyx_n_s_name); if (unlikely(!__pyx_tuple__29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__29);
   __Pyx_GIVEREF(__pyx_tuple__29);
-  __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(0, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_getRegisteredTypes, 1061, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(0, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_getRegisteredTypes, 1064, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1297
+  /* "src/lxml/lxml.objectify.pyx":1300
  * cdef bint __RECURSIVE_STR = 0 # default: off
  * 
  * def enable_recursive_str(on=True):             # <<<<<<<<<<<<<<
  *     u"""enable_recursive_str(on=True)
  * 
  */
-  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_n_s_on); if (unlikely(!__pyx_tuple__31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_n_s_on); if (unlikely(!__pyx_tuple__31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__31);
   __Pyx_GIVEREF(__pyx_tuple__31);
-  __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_enable_recursive_str, 1297, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__33 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_enable_recursive_str, 1300, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__33 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__33);
   __Pyx_GIVEREF(__pyx_tuple__33);
 
-  /* "src/lxml/lxml.objectify.pyx":1306
+  /* "src/lxml/lxml.objectify.pyx":1309
  *     __RECURSIVE_STR = on
  * 
  * def dump(_Element element not None):             # <<<<<<<<<<<<<<
  *     u"""dump(_Element element not None)
  * 
  */
-  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_n_s_element); if (unlikely(!__pyx_tuple__34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_n_s_element); if (unlikely(!__pyx_tuple__34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__34);
   __Pyx_GIVEREF(__pyx_tuple__34);
-  __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_dump, 1306, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_dump, 1309, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1350
+  /* "src/lxml/lxml.objectify.pyx":1353
  * # Pickle support for objectified ElementTree
  * 
  * def __unpickleElementTree(data):             # <<<<<<<<<<<<<<
  *     return etree.ElementTree(fromstring(data))
  * 
  */
-  __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_data); if (unlikely(!__pyx_tuple__36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_data); if (unlikely(!__pyx_tuple__36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__36);
   __Pyx_GIVEREF(__pyx_tuple__36);
-  __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_unpickleElementTree, 1350, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_unpickleElementTree, 1353, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1361
+  /* "src/lxml/lxml.objectify.pyx":1364
  *                    elementTreeReduceFunction, __unpickleElementTree)
  * 
  * def pickleReduceElementTree(obj):             # <<<<<<<<<<<<<<
  *     return (__unpickleElementTree, (etree.tostring(obj),))
  * 
  */
-  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__38);
   __Pyx_GIVEREF(__pyx_tuple__38);
-  __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_pickleReduceElementTree, 1361, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_pickleReduceElementTree, 1364, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1455
+  /* "src/lxml/lxml.objectify.pyx":1458
  *     return None
  * 
  * def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False,             # <<<<<<<<<<<<<<
  *              empty_pytype=None):
  *     u"""pyannotate(element_or_tree, ignore_old=False, ignore_xsi=False, empty_pytype=None)
  */
-  __pyx_tuple__40 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_xsi, __pyx_n_s_empty_pytype, __pyx_n_s_element); if (unlikely(!__pyx_tuple__40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__40 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_xsi, __pyx_n_s_empty_pytype, __pyx_n_s_element); if (unlikely(!__pyx_tuple__40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__40);
   __Pyx_GIVEREF(__pyx_tuple__40);
-  __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_pyannotate, 1455, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_pyannotate, 1458, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1478
+  /* "src/lxml/lxml.objectify.pyx":1481
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
  * 
  * def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,             # <<<<<<<<<<<<<<
  *                 empty_type=None):
  *     u"""xsiannotate(element_or_tree, ignore_old=False, ignore_pytype=False, empty_type=None)
  */
-  __pyx_tuple__42 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_pytype, __pyx_n_s_empty_type, __pyx_n_s_element); if (unlikely(!__pyx_tuple__42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__42 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_pytype, __pyx_n_s_empty_type, __pyx_n_s_element); if (unlikely(!__pyx_tuple__42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__42);
   __Pyx_GIVEREF(__pyx_tuple__42);
-  __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_xsiannotate, 1478, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_xsiannotate, 1481, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1506
+  /* "src/lxml/lxml.objectify.pyx":1509
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
  * 
  * def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,             # <<<<<<<<<<<<<<
  *              empty_pytype=None, empty_type=None, annotate_xsi=0,
  *              annotate_pytype=1):
  */
-  __pyx_tuple__44 = PyTuple_Pack(8, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_xsi, __pyx_n_s_empty_pytype, __pyx_n_s_empty_type, __pyx_n_s_annotate_xsi, __pyx_n_s_annotate_pytype, __pyx_n_s_element); if (unlikely(!__pyx_tuple__44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__44 = PyTuple_Pack(8, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_xsi, __pyx_n_s_empty_pytype, __pyx_n_s_empty_type, __pyx_n_s_annotate_xsi, __pyx_n_s_annotate_pytype, __pyx_n_s_element); if (unlikely(!__pyx_tuple__44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__44);
   __Pyx_GIVEREF(__pyx_tuple__44);
-  __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(1, 6, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_annotate, 1506, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(1, 6, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_annotate, 1509, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1702
+  /* "src/lxml/lxml.objectify.pyx":1705
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,             # <<<<<<<<<<<<<<
  *                bint xsi_nil=False, bint cleanup_namespaces=False):
  *     u"""deannotate(element_or_tree, pytype=True, xsi=True, xsi_nil=False, cleanup_namespaces=False)
  */
-  __pyx_tuple__46 = PyTuple_Pack(6, __pyx_n_s_element_or_tree, __pyx_n_s_pytype, __pyx_n_s_xsi_2, __pyx_n_s_xsi_nil, __pyx_n_s_cleanup_namespaces, __pyx_n_s_attribute_names); if (unlikely(!__pyx_tuple__46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__46 = PyTuple_Pack(6, __pyx_n_s_element_or_tree, __pyx_n_s_pytype, __pyx_n_s_xsi_2, __pyx_n_s_xsi_nil, __pyx_n_s_cleanup_namespaces, __pyx_n_s_attribute_names); if (unlikely(!__pyx_tuple__46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__46);
   __Pyx_GIVEREF(__pyx_tuple__46);
-  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(1, 4, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_deannotate, 1702, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(1, 4, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_deannotate, 1705, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1742
+  /* "src/lxml/lxml.objectify.pyx":1745
  * objectify_parser = __DEFAULT_PARSER
  * 
  * def set_default_parser(new_parser = None):             # <<<<<<<<<<<<<<
  *     u"""set_default_parser(new_parser = None)
  * 
  */
-  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_n_s_new_parser); if (unlikely(!__pyx_tuple__48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_n_s_new_parser); if (unlikely(!__pyx_tuple__48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__48);
   __Pyx_GIVEREF(__pyx_tuple__48);
-  __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_set_default_parser, 1742, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__50 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_set_default_parser, 1745, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__50 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__50);
   __Pyx_GIVEREF(__pyx_tuple__50);
 
-  /* "src/lxml/lxml.objectify.pyx":1760
+  /* "src/lxml/lxml.objectify.pyx":1763
  *         raise TypeError, u"parser must inherit from lxml.etree.XMLParser"
  * 
  * def makeparser(**kw):             # <<<<<<<<<<<<<<
  *     u"""makeparser(remove_blank_text=True, **kw)
  * 
  */
-  __pyx_tuple__51 = PyTuple_Pack(2, __pyx_n_s_kw, __pyx_n_s_parser); if (unlikely(!__pyx_tuple__51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__51 = PyTuple_Pack(2, __pyx_n_s_kw, __pyx_n_s_parser); if (unlikely(!__pyx_tuple__51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__51);
   __Pyx_GIVEREF(__pyx_tuple__51);
-  __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(0, 0, 2, 0, CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_makeparser, 1760, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(0, 0, 2, 0, CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_makeparser, 1763, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1787
+  /* "src/lxml/lxml.objectify.pyx":1790
  * SubElement = etree.SubElement
  * 
  * def fromstring(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""fromstring(xml, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__53 = PyTuple_Pack(3, __pyx_n_s_xml, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__53)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__53 = PyTuple_Pack(3, __pyx_n_s_xml, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__53)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__53);
   __Pyx_GIVEREF(__pyx_tuple__53);
-  __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_fromstring, 1787, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__55 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_fromstring, 1790, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__55 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__55);
   __Pyx_GIVEREF(__pyx_tuple__55);
 
-  /* "src/lxml/lxml.objectify.pyx":1803
+  /* "src/lxml/lxml.objectify.pyx":1806
  *     return _fromstring(xml, parser, base_url=base_url)
  * 
  * def XML(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""XML(xml, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__56 = PyTuple_Pack(3, __pyx_n_s_xml, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__56 = PyTuple_Pack(3, __pyx_n_s_xml, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__56);
   __Pyx_GIVEREF(__pyx_tuple__56);
-  __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_XML, 1803, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__58 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_XML, 1806, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__58 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__58);
   __Pyx_GIVEREF(__pyx_tuple__58);
 
-  /* "src/lxml/lxml.objectify.pyx":1822
+  /* "src/lxml/lxml.objectify.pyx":1825
  * _parse = etree.parse
  * 
  * def parse(f, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""parse(f, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__59 = PyTuple_Pack(3, __pyx_n_s_f, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__59 = PyTuple_Pack(3, __pyx_n_s_f, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__59);
   __Pyx_GIVEREF(__pyx_tuple__59);
-  __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_parse, 1822, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__61 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_parse, 1825, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__61 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__61);
   __Pyx_GIVEREF(__pyx_tuple__61);
 
-  /* "src/lxml/lxml.objectify.pyx":1845
+  /* "src/lxml/lxml.objectify.pyx":1848
  * E = ElementMaker()
  * 
  * def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes):             # <<<<<<<<<<<<<<
  *     u"""Element(_tag, attrib=None, nsmap=None, _pytype=None, **_attributes)
  * 
  */
-  __pyx_tuple__62 = PyTuple_Pack(5, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_pytype_2, __pyx_n_s_attributes); if (unlikely(!__pyx_tuple__62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__62 = PyTuple_Pack(5, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_pytype_2, __pyx_n_s_attributes); if (unlikely(!__pyx_tuple__62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__62);
   __Pyx_GIVEREF(__pyx_tuple__62);
-  __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_Element, 1845, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__64 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__64)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_Element, 1848, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__64 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__64)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__64);
   __Pyx_GIVEREF(__pyx_tuple__64);
 
-  /* "src/lxml/lxml.objectify.pyx":1865
+  /* "src/lxml/lxml.objectify.pyx":1868
  *     return _makeElement(_tag, None, _attributes, nsmap)
  * 
  * def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None,             # <<<<<<<<<<<<<<
  *                 **_attributes):
  *     u"""DataElement(_value, attrib=None, nsmap=None, _pytype=None, _xsi=None, **_attributes)
  */
-  __pyx_tuple__65 = PyTuple_Pack(13, __pyx_n_s_value_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_pytype_2, __pyx_n_s_xsi_3, __pyx_n_s_attributes, __pyx_n_s_temp, __pyx_n_s_prefix, __pyx_n_s_name, __pyx_n_s_ns, __pyx_n_s_py_type, __pyx_n_s_strval, __pyx_n_s_stringify); if (unlikely(!__pyx_tuple__65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__65 = PyTuple_Pack(13, __pyx_n_s_value_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_pytype_2, __pyx_n_s_xsi_3, __pyx_n_s_attributes, __pyx_n_s_temp, __pyx_n_s_prefix, __pyx_n_s_name, __pyx_n_s_ns, __pyx_n_s_py_type, __pyx_n_s_strval, __pyx_n_s_stringify); if (unlikely(!__pyx_tuple__65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__65);
   __Pyx_GIVEREF(__pyx_tuple__65);
-  __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(3, 2, 13, 0, CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_DataElement, 1865, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__67 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(3, 2, 13, 0, CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_stefan_source_Python_lxml, __pyx_n_s_DataElement, 1868, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__67 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__67);
   __Pyx_GIVEREF(__pyx_tuple__67);
 
@@ -34592,11 +34600,11 @@ PyMODINIT_FUNC PyInit_objectify(void)
   __pyx_type_4lxml_9objectify_PyType.tp_print = 0;
   if (PyObject_SetAttrString(__pyx_m, "PyType", (PyObject *)&__pyx_type_4lxml_9objectify_PyType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_9objectify_PyType = &__pyx_type_4lxml_9objectify_PyType;
-  if (PyType_Ready(&__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller.tp_print = 0;
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller, "__call__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller, "__call__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
       __pyx_wrapperbase_4lxml_9objectify_28_ObjectifyElementMakerCaller___call__ = *((PyWrapperDescrObject *)wrapper)->d_base;
       __pyx_wrapperbase_4lxml_9objectify_28_ObjectifyElementMakerCaller___call__.doc = __pyx_doc_4lxml_9objectify_28_ObjectifyElementMakerCaller___call__;
@@ -34607,18 +34615,18 @@ PyMODINIT_FUNC PyInit_objectify(void)
   __pyx_ptype_4lxml_9objectify__ObjectifyElementMakerCaller = &__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller;
   __pyx_vtabptr_4lxml_9objectify_ElementMaker = &__pyx_vtable_4lxml_9objectify_ElementMaker;
   __pyx_vtable_4lxml_9objectify_ElementMaker._build_element_maker = (PyObject *(*)(struct __pyx_obj_4lxml_9objectify_ElementMaker *, PyObject *, int))__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker;
-  if (PyType_Ready(&__pyx_type_4lxml_9objectify_ElementMaker) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_9objectify_ElementMaker) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_9objectify_ElementMaker.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_4lxml_9objectify_ElementMaker.tp_dict, __pyx_vtabptr_4lxml_9objectify_ElementMaker) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyObject_SetAttrString(__pyx_m, "ElementMaker", (PyObject *)&__pyx_type_4lxml_9objectify_ElementMaker) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4lxml_9objectify_ElementMaker.tp_dict, __pyx_vtabptr_4lxml_9objectify_ElementMaker) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "ElementMaker", (PyObject *)&__pyx_type_4lxml_9objectify_ElementMaker) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_9objectify_ElementMaker = &__pyx_type_4lxml_9objectify_ElementMaker;
   __pyx_ptype_4lxml_8includes_11etreepublic_ElementClassLookup = __Pyx_ImportType("lxml.etree", "ElementClassLookup", sizeof(struct LxmlElementClassLookup), 0); if (unlikely(!__pyx_ptype_4lxml_8includes_11etreepublic_ElementClassLookup)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_9objectify_ObjectifyElementClassLookup.tp_base = __pyx_ptype_4lxml_8includes_11etreepublic_ElementClassLookup;
-  if (PyType_Ready(&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_9objectify_ObjectifyElementClassLookup.tp_print = 0;
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup, "__init__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup, "__init__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
       __pyx_wrapperbase_4lxml_9objectify_27ObjectifyElementClassLookup___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
       __pyx_wrapperbase_4lxml_9objectify_27ObjectifyElementClassLookup___init__.doc = __pyx_doc_4lxml_9objectify_27ObjectifyElementClassLookup___init__;
@@ -34626,7 +34634,7 @@ PyMODINIT_FUNC PyInit_objectify(void)
     }
   }
   #endif
-  if (PyObject_SetAttrString(__pyx_m, "ObjectifyElementClassLookup", (PyObject *)&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "ObjectifyElementClassLookup", (PyObject *)&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_4lxml_9objectify_ObjectifyElementClassLookup = &__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup;
   if (PyType_Ready(&__pyx_type_4lxml_9objectify_ObjectPath) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_4lxml_9objectify_ObjectPath.tp_print = 0;
@@ -35096,80 +35104,80 @@ PyMODINIT_FUNC PyInit_objectify(void)
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_checkBool, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1005
+  /* "src/lxml/lxml.objectify.pyx":1008
  * 
  * 
  * cdef dict _PYTYPE_DICT = {}             # <<<<<<<<<<<<<<
  * cdef dict _SCHEMA_TYPE_DICT = {}
  * cdef list _TYPE_CHECKS = []
  */
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__PYTYPE_DICT);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__PYTYPE_DICT, ((PyObject*)__pyx_t_2));
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1006
+  /* "src/lxml/lxml.objectify.pyx":1009
  * 
  * cdef dict _PYTYPE_DICT = {}
  * cdef dict _SCHEMA_TYPE_DICT = {}             # <<<<<<<<<<<<<<
  * cdef list _TYPE_CHECKS = []
  * 
  */
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, ((PyObject*)__pyx_t_2));
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1007
+  /* "src/lxml/lxml.objectify.pyx":1010
  * cdef dict _PYTYPE_DICT = {}
  * cdef dict _SCHEMA_TYPE_DICT = {}
  * cdef list _TYPE_CHECKS = []             # <<<<<<<<<<<<<<
  * 
  * def __lower_bool(b):
  */
-  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1010; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__TYPE_CHECKS);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__TYPE_CHECKS, ((PyObject*)__pyx_t_2));
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1009
+  /* "src/lxml/lxml.objectify.pyx":1012
  * cdef list _TYPE_CHECKS = []
  * 
  * def __lower_bool(b):             # <<<<<<<<<<<<<<
  *     return u"true" if b else u"false"
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_7__lower_bool, 0, __pyx_n_s_lower_bool, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_7__lower_bool, 0, __pyx_n_s_lower_bool, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_lower_bool, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_lower_bool, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1015
+  /* "src/lxml/lxml.objectify.pyx":1018
  *     return u"str" if python._isString(obj) else _typename(obj)
  * 
  * def pytypename(obj):             # <<<<<<<<<<<<<<
  *     u"""pytypename(obj)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_9pytypename, 0, __pyx_n_s_pytypename, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_9pytypename, 0, __pyx_n_s_pytypename, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pytypename, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pytypename, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1057
+  /* "src/lxml/lxml.objectify.pyx":1060
  * 
  * # non-registered PyType for inner tree elements
  * cdef PyType TREE_PYTYPE = PyType(TREE_PYTYPE_NAME, None, ObjectifiedElement)             # <<<<<<<<<<<<<<
  * 
  * _registerPyTypes()
  */
-  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
   __Pyx_GIVEREF(__pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
@@ -35180,7 +35188,7 @@ PyMODINIT_FUNC PyInit_objectify(void)
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
   __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
   PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_9objectify_TREE_PYTYPE));
@@ -35188,30 +35196,30 @@ PyMODINIT_FUNC PyInit_objectify(void)
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1059
+  /* "src/lxml/lxml.objectify.pyx":1062
  * cdef PyType TREE_PYTYPE = PyType(TREE_PYTYPE_NAME, None, ObjectifiedElement)
  * 
  * _registerPyTypes()             # <<<<<<<<<<<<<<
  * 
  * def getRegisteredTypes():
  */
-  __pyx_t_1 = __pyx_f_4lxml_9objectify__registerPyTypes(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_4lxml_9objectify__registerPyTypes(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1061
+  /* "src/lxml/lxml.objectify.pyx":1064
  * _registerPyTypes()
  * 
  * def getRegisteredTypes():             # <<<<<<<<<<<<<<
  *     u"""getRegisteredTypes()
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_11getRegisteredTypes, 0, __pyx_n_s_getRegisteredTypes, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_11getRegisteredTypes, 0, __pyx_n_s_getRegisteredTypes, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_getRegisteredTypes, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_getRegisteredTypes, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1295
+  /* "src/lxml/lxml.objectify.pyx":1298
  * # Recursive element dumping
  * 
  * cdef bint __RECURSIVE_STR = 0 # default: off             # <<<<<<<<<<<<<<
@@ -35220,227 +35228,227 @@ PyMODINIT_FUNC PyInit_objectify(void)
  */
   __pyx_v_4lxml_9objectify___RECURSIVE_STR = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1297
+  /* "src/lxml/lxml.objectify.pyx":1300
  * cdef bint __RECURSIVE_STR = 0 # default: off
  * 
  * def enable_recursive_str(on=True):             # <<<<<<<<<<<<<<
  *     u"""enable_recursive_str(on=True)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_13enable_recursive_str, 0, __pyx_n_s_enable_recursive_str, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_13enable_recursive_str, 0, __pyx_n_s_enable_recursive_str, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__33);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_enable_recursive_str, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_enable_recursive_str, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1306
+  /* "src/lxml/lxml.objectify.pyx":1309
  *     __RECURSIVE_STR = on
  * 
  * def dump(_Element element not None):             # <<<<<<<<<<<<<<
  *     u"""dump(_Element element not None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_15dump, 0, __pyx_n_s_dump, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_15dump, 0, __pyx_n_s_dump, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dump, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dump, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1350
+  /* "src/lxml/lxml.objectify.pyx":1353
  * # Pickle support for objectified ElementTree
  * 
  * def __unpickleElementTree(data):             # <<<<<<<<<<<<<<
  *     return etree.ElementTree(fromstring(data))
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_17__unpickleElementTree, 0, __pyx_n_s_unpickleElementTree, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_17__unpickleElementTree, 0, __pyx_n_s_unpickleElementTree, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_unpickleElementTree, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_unpickleElementTree, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1361
+  /* "src/lxml/lxml.objectify.pyx":1364
  *                    elementTreeReduceFunction, __unpickleElementTree)
  * 
  * def pickleReduceElementTree(obj):             # <<<<<<<<<<<<<<
  *     return (__unpickleElementTree, (etree.tostring(obj),))
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_19pickleReduceElementTree, 0, __pyx_n_s_pickleReduceElementTree, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_19pickleReduceElementTree, 0, __pyx_n_s_pickleReduceElementTree, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pickleReduceElementTree, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pickleReduceElementTree, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1364
+  /* "src/lxml/lxml.objectify.pyx":1367
  *     return (__unpickleElementTree, (etree.tostring(obj),))
  * 
  * _setupPickle(pickleReduceElementTree)             # <<<<<<<<<<<<<<
  * del pickleReduceElementTree
  * 
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pickleReduceElementTree); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pickleReduceElementTree); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __pyx_f_4lxml_9objectify__setupPickle(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __pyx_f_4lxml_9objectify__setupPickle(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1367; __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;
 
-  /* "src/lxml/lxml.objectify.pyx":1365
+  /* "src/lxml/lxml.objectify.pyx":1368
  * 
  * _setupPickle(pickleReduceElementTree)
  * del pickleReduceElementTree             # <<<<<<<<<<<<<<
  * 
  * ################################################################################
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_pickleReduceElementTree) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_pickleReduceElementTree) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1455
+  /* "src/lxml/lxml.objectify.pyx":1458
  *     return None
  * 
  * def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False,             # <<<<<<<<<<<<<<
  *              empty_pytype=None):
  *     u"""pyannotate(element_or_tree, ignore_old=False, ignore_xsi=False, empty_pytype=None)
  */
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_old, ((PyObject *)Py_False)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_xsi, ((PyObject *)Py_False)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_empty_pytype, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_21pyannotate, 0, __pyx_n_s_pyannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_old, ((PyObject *)Py_False)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_xsi, ((PyObject *)Py_False)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_empty_pytype, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_21pyannotate, 0, __pyx_n_s_pyannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyannotate, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyannotate, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1478
+  /* "src/lxml/lxml.objectify.pyx":1481
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
  * 
  * def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,             # <<<<<<<<<<<<<<
  *                 empty_type=None):
  *     u"""xsiannotate(element_or_tree, ignore_old=False, ignore_pytype=False, empty_type=None)
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_old, ((PyObject *)Py_False)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_pytype, ((PyObject *)Py_False)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_type, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_23xsiannotate, 0, __pyx_n_s_xsiannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_old, ((PyObject *)Py_False)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_pytype, ((PyObject *)Py_False)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_type, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_23xsiannotate, 0, __pyx_n_s_xsiannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_xsiannotate, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_xsiannotate, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1506
+  /* "src/lxml/lxml.objectify.pyx":1509
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
  * 
  * def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,             # <<<<<<<<<<<<<<
  *              empty_pytype=None, empty_type=None, annotate_xsi=0,
  *              annotate_pytype=1):
  */
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_old, ((PyObject *)Py_True)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_xsi, ((PyObject *)Py_False)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_empty_pytype, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_empty_type, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_annotate_xsi, ((PyObject *)__pyx_int_0)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_annotate_pytype, ((PyObject *)__pyx_int_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_25annotate, 0, __pyx_n_s_annotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_old, ((PyObject *)Py_True)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_xsi, ((PyObject *)Py_False)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_empty_pytype, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_empty_type, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_annotate_xsi, ((PyObject *)__pyx_int_0)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_annotate_pytype, ((PyObject *)__pyx_int_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_25annotate, 0, __pyx_n_s_annotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_annotate, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_annotate, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1699
+  /* "src/lxml/lxml.objectify.pyx":1702
  *     return 0
  * 
  * cdef object _strip_attributes = etree.strip_attributes             # <<<<<<<<<<<<<<
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_strip_attributes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_strip_attributes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__strip_attributes);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__strip_attributes, __pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1700
+  /* "src/lxml/lxml.objectify.pyx":1703
  * 
  * cdef object _strip_attributes = etree.strip_attributes
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces             # <<<<<<<<<<<<<<
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_cleanup_namespaces); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_cleanup_namespaces); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__cleanup_namespaces);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__cleanup_namespaces, __pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1702
+  /* "src/lxml/lxml.objectify.pyx":1705
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,             # <<<<<<<<<<<<<<
  *                bint xsi_nil=False, bint cleanup_namespaces=False):
  *     u"""deannotate(element_or_tree, pytype=True, xsi=True, xsi_nil=False, cleanup_namespaces=False)
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pytype, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pytype, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_xsi_2, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_xsi_2, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1703
+  /* "src/lxml/lxml.objectify.pyx":1706
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,
  *                bint xsi_nil=False, bint cleanup_namespaces=False):             # <<<<<<<<<<<<<<
  *     u"""deannotate(element_or_tree, pytype=True, xsi=True, xsi_nil=False, cleanup_namespaces=False)
  * 
  */
-  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_xsi_nil, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_xsi_nil, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_cleanup_namespaces, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_cleanup_namespaces, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1702
+  /* "src/lxml/lxml.objectify.pyx":1705
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,             # <<<<<<<<<<<<<<
  *                bint xsi_nil=False, bint cleanup_namespaces=False):
  *     u"""deannotate(element_or_tree, pytype=True, xsi=True, xsi_nil=False, cleanup_namespaces=False)
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_27deannotate, 0, __pyx_n_s_deannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_27deannotate, 0, __pyx_n_s_deannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_deannotate, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_deannotate, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1736
+  /* "src/lxml/lxml.objectify.pyx":1739
  * 
  * cdef object __DEFAULT_PARSER
  * __DEFAULT_PARSER = etree.XMLParser(remove_blank_text=True)             # <<<<<<<<<<<<<<
  * __DEFAULT_PARSER.set_element_class_lookup( ObjectifyElementClassLookup() )
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_remove_blank_text, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_remove_blank_text, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -35449,16 +35457,16 @@ PyMODINIT_FUNC PyInit_objectify(void)
   __Pyx_GIVEREF(__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1737
+  /* "src/lxml/lxml.objectify.pyx":1740
  * cdef object __DEFAULT_PARSER
  * __DEFAULT_PARSER = etree.XMLParser(remove_blank_text=True)
  * __DEFAULT_PARSER.set_element_class_lookup( ObjectifyElementClassLookup() )             # <<<<<<<<<<<<<<
  * 
  * cdef object objectify_parser
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify___DEFAULT_PARSER, __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify___DEFAULT_PARSER, __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifyElementClassLookup), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifyElementClassLookup), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -35471,24 +35479,24 @@ PyMODINIT_FUNC PyInit_objectify(void)
     }
   }
   if (!__pyx_t_5) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_GOTREF(__pyx_t_4);
   } else {
-    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1740
+  /* "src/lxml/lxml.objectify.pyx":1743
  * 
  * cdef object objectify_parser
  * objectify_parser = __DEFAULT_PARSER             # <<<<<<<<<<<<<<
@@ -35500,205 +35508,205 @@ PyMODINIT_FUNC PyInit_objectify(void)
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_objectify_parser, __pyx_v_4lxml_9objectify___DEFAULT_PARSER);
   __Pyx_GIVEREF(__pyx_v_4lxml_9objectify___DEFAULT_PARSER);
 
-  /* "src/lxml/lxml.objectify.pyx":1742
+  /* "src/lxml/lxml.objectify.pyx":1745
  * objectify_parser = __DEFAULT_PARSER
  * 
  * def set_default_parser(new_parser = None):             # <<<<<<<<<<<<<<
  *     u"""set_default_parser(new_parser = None)
  * 
  */
-  __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_29set_default_parser, 0, __pyx_n_s_set_default_parser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_29set_default_parser, 0, __pyx_n_s_set_default_parser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_tuple__50);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_parser, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_parser, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1760
+  /* "src/lxml/lxml.objectify.pyx":1763
  *         raise TypeError, u"parser must inherit from lxml.etree.XMLParser"
  * 
  * def makeparser(**kw):             # <<<<<<<<<<<<<<
  *     u"""makeparser(remove_blank_text=True, **kw)
  * 
  */
-  __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_31makeparser, 0, __pyx_n_s_makeparser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_31makeparser, 0, __pyx_n_s_makeparser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_makeparser, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_makeparser, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1783
+  /* "src/lxml/lxml.objectify.pyx":1786
  * 
  * cdef object _fromstring
  * _fromstring = etree.fromstring             # <<<<<<<<<<<<<<
  * 
  * SubElement = etree.SubElement
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_fromstring); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_fromstring); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__fromstring);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__fromstring, __pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1785
+  /* "src/lxml/lxml.objectify.pyx":1788
  * _fromstring = etree.fromstring
  * 
  * SubElement = etree.SubElement             # <<<<<<<<<<<<<<
  * 
  * def fromstring(xml, parser=None, *, base_url=None):
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_SubElement); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_SubElement); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SubElement, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SubElement, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1787
+  /* "src/lxml/lxml.objectify.pyx":1790
  * SubElement = etree.SubElement
  * 
  * def fromstring(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""fromstring(xml, parser=None, base_url=None)
  * 
  */
-  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_33fromstring, 0, __pyx_n_s_fromstring, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_33fromstring, 0, __pyx_n_s_fromstring, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__55);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_4);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fromstring, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fromstring, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1803
+  /* "src/lxml/lxml.objectify.pyx":1806
  *     return _fromstring(xml, parser, base_url=base_url)
  * 
  * def XML(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""XML(xml, parser=None, base_url=None)
  * 
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_35XML, 0, __pyx_n_s_XML, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_35XML, 0, __pyx_n_s_XML, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_tuple__58);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_4, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_XML, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_XML, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1820
+  /* "src/lxml/lxml.objectify.pyx":1823
  * 
  * cdef object _parse
  * _parse = etree.parse             # <<<<<<<<<<<<<<
  * 
  * def parse(f, parser=None, *, base_url=None):
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_parse); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_parse); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__parse);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__parse, __pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1822
+  /* "src/lxml/lxml.objectify.pyx":1825
  * _parse = etree.parse
  * 
  * def parse(f, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""parse(f, parser=None, base_url=None)
  * 
  */
-  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_37parse, 0, __pyx_n_s_parse, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__60)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_37parse, 0, __pyx_n_s_parse, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__60)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__61);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_4);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1838
+  /* "src/lxml/lxml.objectify.pyx":1841
  * 
  * cdef dict _DEFAULT_NSMAP = {
  *     "py"  : PYTYPE_NAMESPACE,             # <<<<<<<<<<<<<<
  *     "xsi" : XML_SCHEMA_INSTANCE_NS,
  *     "xsd" : XML_SCHEMA_NS
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_py_2, __pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_py_2, __pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1839
+  /* "src/lxml/lxml.objectify.pyx":1842
  * cdef dict _DEFAULT_NSMAP = {
  *     "py"  : PYTYPE_NAMESPACE,
  *     "xsi" : XML_SCHEMA_INSTANCE_NS,             # <<<<<<<<<<<<<<
  *     "xsd" : XML_SCHEMA_NS
  * }
  */
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_xsi_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_xsi_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "src/lxml/lxml.objectify.pyx":1841
+  /* "src/lxml/lxml.objectify.pyx":1844
  *     "xsi" : XML_SCHEMA_INSTANCE_NS,
  *     "xsd" : XML_SCHEMA_NS
  * }             # <<<<<<<<<<<<<<
  * 
  * E = ElementMaker()
  */
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_xsd, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_xsd, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP, ((PyObject*)__pyx_t_1));
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1843
+  /* "src/lxml/lxml.objectify.pyx":1846
  * }
  * 
  * E = ElementMaker()             # <<<<<<<<<<<<<<
  * 
  * def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes):
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_ElementMaker), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_ElementMaker), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_E, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_E, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1845
+  /* "src/lxml/lxml.objectify.pyx":1848
  * E = ElementMaker()
  * 
  * def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes):             # <<<<<<<<<<<<<<
  *     u"""Element(_tag, attrib=None, nsmap=None, _pytype=None, **_attributes)
  * 
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pytype_2, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_39Element, 0, __pyx_n_s_Element, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pytype_2, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_39Element, 0, __pyx_n_s_Element, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_tuple__64);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_4, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Element, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Element, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "src/lxml/lxml.objectify.pyx":1865
+  /* "src/lxml/lxml.objectify.pyx":1868
  *     return _makeElement(_tag, None, _attributes, nsmap)
  * 
  * def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None,             # <<<<<<<<<<<<<<
  *                 **_attributes):
  *     u"""DataElement(_value, attrib=None, nsmap=None, _pytype=None, _xsi=None, **_attributes)
  */
-  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_pytype_2, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_xsi_3, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_41DataElement, 0, __pyx_n_s_DataElement, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_pytype_2, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_xsi_3, ((PyObject *)Py_None)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_41DataElement, 0, __pyx_n_s_DataElement, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__67);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_4);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DataElement, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DataElement, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
   /* "src/lxml/objectpath.pxi":10
@@ -38600,7 +38608,7 @@ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
             const digit* digits = ((PyLongObject*)x)->ob_digit;
             switch (Py_SIZE(x)) {
                 case  0: return (int) 0;
-                case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, -(sdigit) digits[0])
+                case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
                 case  1: __PYX_VERIFY_RETURN_INT(int,  digit, +digits[0])
                 case -2:
                     if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
@@ -38836,7 +38844,7 @@ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
             const digit* digits = ((PyLongObject*)x)->ob_digit;
             switch (Py_SIZE(x)) {
                 case  0: return (long) 0;
-                case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, -(sdigit) digits[0])
+                case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
                 case  1: __PYX_VERIFY_RETURN_INT(long,  digit, +digits[0])
                 case -2:
                     if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
index 371eb2c56c8a506200aa2ece396760b7ec1139d8..d79fcd82e3c37d86e2d284d2a97dd4c15e930f8b 100644 (file)
@@ -896,11 +896,14 @@ cdef class PyType:
     u"""PyType(self, name, type_check, type_class, stringify=None)
     User defined type.
 
-    Named type that contains a type check function and a type class that
-    inherits from ObjectifiedDataElement.  The type check must take a string
-    as argument and raise ValueError or TypeError if it cannot handle the
-    string value.  It may be None in which case it is not considered for type
-    guessing.
+    Named type that contains a type check function, a type class that
+    inherits from ObjectifiedDataElement and an optional "stringification"
+    function.  The type check must take a string as argument and raise
+    ValueError or TypeError if it cannot handle the string value.  It may be
+    None in which case it is not considered for type guessing.  For registered
+    named types, the 'stringify' function (or unicode() if None) is used to
+    convert a Python object with type name 'name' to the string representation
+    stored in the XML tree.
 
     Example::
 
@@ -1031,7 +1034,7 @@ cdef _registerPyTypes():
     pytype = PyType(u'long', None, IntElement)
     pytype.register()
 
-    pytype = PyType(u'float', float, FloatElement)
+    pytype = PyType(u'float', float, FloatElement, repr)
     pytype.xmlSchemaTypes = (u"double", u"float")
     pytype.register()
 
index cf696469be9e125b0e44226ab80ffb91eeb17d5d..bccc79baeb6bdd2c59f2ff941b19cf90bc7a62d6 100644 (file)
@@ -445,8 +445,19 @@ cdef xmlparser.xmlParserInput* _local_resolver(const_char* c_url, const_char* c_
     if doc_ref is not None:
         if doc_ref._type == PARSER_DATA_STRING:
             data = doc_ref._data_bytes
+            filename = doc_ref._filename
+            if not filename:
+                filename = None
+            elif not isinstance(filename, bytes):
+                # most likely a text URL
+                filename = filename.encode('utf8')
+                if not isinstance(filename, bytes):
+                    filename = None
+
             c_input = xmlparser.xmlNewInputStream(c_context)
             if c_input is not NULL:
+                if filename is not None:
+                    c_input.filename = <char *>tree.xmlStrdup(_xcstr(filename))
                 c_input.base = _xcstr(data)
                 c_input.length = python.PyBytes_GET_SIZE(data)
                 c_input.cur = c_input.base
@@ -1390,7 +1401,7 @@ _XML_DEFAULT_PARSE_OPTIONS = (
     )
 
 cdef class XMLParser(_FeedParser):
-    u"""XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, XMLSchema schema=None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
+    u"""XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
 
     The XML parser.
 
@@ -1584,7 +1595,7 @@ _HTML_DEFAULT_PARSE_OPTIONS = (
 cdef class HTMLParser(_FeedParser):
     u"""HTMLParser(self, encoding=None, remove_blank_text=False, \
                    remove_comments=False, remove_pis=False, strip_cdata=True, \
-                   no_network=True, target=None, XMLSchema schema=None, \
+                   no_network=True, target=None, schema: XMLSchema =None, \
                    recover=True, compact=True)
 
     The HTML parser.
index b17e38c29e053802bd6e2b2272575269805118e1..68b9d7a8410436dff59c91243be72eeb32666157 100644 (file)
@@ -1016,6 +1016,50 @@ class ObjectifyTestCase(HelperTestCase):
         value = objectify.DataElement(5.5)
         self.assertEqual(hash(value), hash(5.5))
 
+    def test_type_float_precision(self):
+        # test not losing precision by shortened float str() value
+        # repr(2.305064300557): '2.305064300557'
+        # str(2.305064300557): '2.30506430056'
+        # "%57.54f" % 2.305064300557:
+        #     ' 2.305064300556999956626214043353684246540069580078125000'
+        Element = self.Element
+        root = Element("{objectified}root")
+        s = "2.305064300557"
+        root.f = float(s)
+        self.assertTrue(isinstance(root.f, objectify.FloatElement))
+        self.assertEqual(root.f.text, s)
+        self.assertEqual(root.f.pyval, float(s))
+
+    def test_type_float_instantiation_precision(self):
+        # test precision preservation for FloatElement instantiation
+        s = "2.305064300557"
+        self.assertEqual(objectify.FloatElement(s), float(s))
+  
+    def test_type_float_precision_consistency(self):
+        # test consistent FloatElement values for the different instantiation
+        # possibilities
+        Element = self.Element
+        root = Element("{objectified}root")
+        s = "2.305064300557"
+        f = float(s)
+        float_elem = objectify.FloatElement(s)
+        float_data_elem = objectify.DataElement(f)
+        root.float_child = float(f)
+        self.assertTrue(f == float_elem == float_data_elem == root.float_child)
+
+    def test_data_element_float_precision(self):
+        # test not losing precision by shortened float str() value
+        f = 2305064300557.0
+        value = objectify.DataElement(f)
+        self.assertTrue(isinstance(value, objectify.FloatElement))
+        self.assertEqual(value, f)
+
+    def test_data_element_float_hash_repr(self):
+        # test not losing precision by shortened float str() value
+        f = 2305064300557.0
+        value = objectify.DataElement(f)
+        self.assertEqual(hash(value), hash(f))
+
     def test_data_element_xsitypes(self):
         for xsi, objclass in xsitype2objclass.items():
             # 1 is a valid value for all ObjectifiedDataElement classes
index 6ee82c5c58b1e6bb1ccf81d2886fa39718fce533..63f78ecf6db1269e27e5ab524d3f64203543a410 100644 (file)
@@ -53,19 +53,16 @@ class ETreeXSLTTestCase(HelperTestCase):
     def test_xslt_input_none(self):
         self.assertRaises(TypeError, etree.XSLT, None)
 
-    if False and etree.LIBXSLT_VERSION >= (1,1,15):
-        # earlier versions generate no error
-        if etree.LIBXSLT_VERSION > (1,1,17):
-            def test_xslt_invalid_stylesheet(self):
-                style = self.parse('''\
+    def test_xslt_invalid_stylesheet(self):
+        style = self.parse('''\
 <xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-  <xsl:stylesheet />
+        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:stylesheet />
 </xsl:stylesheet>''')
 
-                self.assertRaises(
-                    etree.XSLTParseError, etree.XSLT, style)
-        
+        self.assertRaises(
+            etree.XSLTParseError, etree.XSLT, style)
+
     def test_xslt_copy(self):
         tree = self.parse('<a><b>B</b><c>C</c></a>')
         style = self.parse('''\
@@ -259,6 +256,18 @@ class ETreeXSLTTestCase(HelperTestCase):
         self.assertRaises(etree.XSLTParseError,
                           etree.XSLT, style)
 
+        exc = None
+        try:
+            etree.XSLT(style)
+        except etree.XSLTParseError as e:
+            exc = e
+        else:
+            self.assertFalse(True, "XSLT processing should have failed but didn't")
+        self.assertTrue(exc is not None)
+        self.assertTrue(len(exc.error_log))
+        for error in exc.error_log:
+            self.assertTrue(':ERROR:XSLT:' in str(error))
+
     def test_xslt_parameters(self):
         tree = self.parse('<a><b>B</b><c>C</c></a>')
         style = self.parse('''\
@@ -312,12 +321,10 @@ class ETreeXSLTTestCase(HelperTestCase):
         res = self.assertRaises(etree.XSLTApplyError,
                                 st, tree, bar="....")
 
-    if etree.LIBXSLT_VERSION < (1,1,18):
-        # later versions produce no error
-        def test_xslt_parameter_missing(self):
-            # apply() without needed parameter will lead to XSLTApplyError
-            tree = self.parse('<a><b>B</b><c>C</c></a>')
-            style = self.parse('''\
+    def test_xslt_parameter_missing(self):
+        # apply() without needed parameter will lead to XSLTApplyError
+        tree = self.parse('<a><b>B</b><c>C</c></a>')
+        style = self.parse('''\
 <xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="/">
@@ -325,9 +332,9 @@ class ETreeXSLTTestCase(HelperTestCase):
   </xsl:template>
 </xsl:stylesheet>''')
 
-            st = etree.XSLT(style)
-            self.assertRaises(etree.XSLTApplyError,
-                              st.apply, tree)
+        st = etree.XSLT(style)
+        # at least libxslt 1.1.28 produces this error, earlier ones (e.g. 1.1.18) might not ...
+        self.assertRaises(etree.XSLTApplyError, st.apply, tree)
 
     def test_xslt_multiple_parameters(self):
         tree = self.parse('<a><b>B</b><c>C</c></a>')
@@ -644,7 +651,21 @@ class ETreeXSLTTestCase(HelperTestCase):
   </xsl:template>
 </xsl:stylesheet>
 """))
-        self.assertRaises(etree.XSLTApplyError, xslt, etree.XML('<a/>'))
+
+        errors = None
+        try:
+            xslt(etree.XML('<a/>'))
+        except etree.XSLTApplyError as exc:
+            errors = exc.error_log
+        else:
+            self.assertFalse(True, "XSLT processing should have failed but didn't")
+
+        self.assertTrue(len(errors))
+        for error in errors:
+            if ':ERROR:XSLT:' in str(error):
+                break
+        else:
+            self.assertFalse(True, 'No XSLT errors found in error log:\n%s' % errors)
 
     def test_xslt_document_XML_resolver(self):
         # make sure document('') works when custom resolvers are in use
@@ -1015,28 +1036,26 @@ class ETreeEXSLTTestCase(HelperTestCase):
 ''',
                           str(res))
 
-    if etree.LIBXSLT_VERSION >= (1,1,21):
-        def test_exslt_str_attribute_replace(self):
-            tree = self.parse('<a><b>B</b><c>C</c></a>')
-            style = self.parse('''\
-      <xsl:stylesheet version = "1.0"
-          xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
-          xmlns:str="http://exslt.org/strings"
-          extension-element-prefixes="str">
+    def test_exslt_str_attribute_replace(self):
+        tree = self.parse('<a><b>B</b><c>C</c></a>')
+        style = self.parse('''\
+          <xsl:stylesheet version = "1.0"
+              xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
+              xmlns:str="http://exslt.org/strings"
+              extension-element-prefixes="str">
 
-          <xsl:template match="/">
-            <h1 class="{str:replace('abc', 'b', 'x')}">test</h1>
-          </xsl:template>
+              <xsl:template match="/">
+                <h1 class="{str:replace('abc', 'b', 'x')}">test</h1>
+              </xsl:template>
 
-      </xsl:stylesheet>''')
+          </xsl:stylesheet>''')
 
-            st = etree.XSLT(style)
-            res = st(tree)
-            self.assertEqual('''\
+        st = etree.XSLT(style)
+        res = st(tree)
+        self.assertEqual(str(res), '''\
 <?xml version="1.0"?>
 <h1 class="axc">test</h1>
-''',
-                              str(res))
+''')
 
     def test_exslt_math(self):
         tree = self.parse('<a><b>B</b><c>C</c></a>')
index 5294b500adb53c6d14d1cef448d7eb86f320502e..e623e0ac17ec687b4e09985bd1a51b6d4d82a0b4 100644 (file)
@@ -369,6 +369,7 @@ cdef class _ListErrorLog(_BaseErrorLog):
         """
         return self.filter_from_level(ErrorLevels.WARNING)
 
+
 @cython.final
 @cython.internal
 cdef class _ErrorLogContext:
@@ -379,6 +380,9 @@ cdef class _ErrorLogContext:
     """
     cdef xmlerror.xmlStructuredErrorFunc old_error_func
     cdef void* old_error_context
+    cdef xmlerror.xmlGenericErrorFunc old_xslt_error_func
+    cdef void* old_xslt_error_context
+
 
 cdef class _ErrorLog(_ListErrorLog):
     cdef list _logContexts
@@ -404,14 +408,20 @@ cdef class _ErrorLog(_ListErrorLog):
         cdef _ErrorLogContext context = _ErrorLogContext.__new__(_ErrorLogContext)
         context.old_error_func = xmlerror.xmlStructuredError
         context.old_error_context = xmlerror.xmlStructuredErrorContext
+        context.old_xslt_error_func = xslt.xsltGenericError
+        context.old_xslt_error_context = xslt.xsltGenericErrorContext
         self._logContexts.append(context)
         xmlerror.xmlSetStructuredErrorFunc(
             <void*>self, <xmlerror.xmlStructuredErrorFunc>_receiveError)
+        xslt.xsltSetGenericErrorFunc(
+           <void*>self, <xmlerror.xmlGenericErrorFunc>_receiveXSLTError)
         return 0
 
     @cython.final
     cdef int disconnect(self) except -1:
         cdef _ErrorLogContext context = self._logContexts.pop()
+        xslt.xsltSetGenericErrorFunc(
+            context.old_xslt_error_context, context.old_xslt_error_func)
         xmlerror.xmlSetStructuredErrorFunc(
             context.old_error_context, context.old_error_func)
         return 0
index 40c341bdcdbe83bbbda981fa85368c0e1a63d0c7..9575d51bad249b78b01fa517932882eb917cb750 100644 (file)
@@ -1 +1 @@
-3.6.0
+3.6.1